2009-02-06 38 views
3

我從Oracle數據庫導入數據並使用Excel從中創建一些報告。最近我們的一個數據錄入人員已經開始用「+」開始她的輸入。 Excel比評估和增加=然後顯示可怕的?name#錯誤。該錯誤是錯誤2029VBA字符串衛生

我嘗試使用

If IsError(C.Value) Then 
    C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare) 
End If 

但是,這並不讓我在任何地方。

有什麼建議嗎?

回答

1

如果你有一個文本的數據/ CSV那麼文件,你可以嘗試:Data > Import External Data > Import Data這將啓動一個嚮導,它可以讓你指定特定的列作爲文本和原因像+符號, - 等不被用Excel

解析在VBA這可以通過Worksheet("foo").QueryTables.Add方法來完成。有很多選項,但TextFileColumnDataTypes屬性允許您指定哪些列視爲文本。通過錄制正在使用的嚮導的宏,然後進行編輯,可能會更容易,然後進行編輯以適應

如果您直接讀取數據(例如,通過ADO或DAO),那麼只需確保目的小區是文本格式在原來的解決方案將數據添加

Worksheet("foo").Cells(r, c).NumberFormat = "@"


NB之前,你幾乎可以肯定想看看C.Formula而非C.Value如果單元C具有=123+456公式那麼C.Value就是579其中作爲C.Formula=123+456

+1使用內置在這種情況下Replace方法

2

Excel有它自己的替換功能:

ActiveSheet.Cells.Replace What:="=+", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 
+0

當我運行我得到運行時錯誤'438'Obeject dosen「t支持這個屬性或方法OD – CABecker 2009-02-06 19:45:09

+0

哎呀 - 與「細胞」再試一次 - 它返回 – 2009-02-06 19:53:54

0

只是另外一件事情,它應該是:

If IsError(C.Value) Then 
    C.Value = Replace(C.Formula, "=+", "", 1, -1, vbTextCompare) 
End If 

這是因爲= +是存儲在公式屬性中,而不是值...如果您不想在VBA中自行清理,可以將替換(...)分配給C.Value或C.Formula