我從Oracle數據庫導入數據並使用Excel從中創建一些報告。最近我們的一個數據錄入人員已經開始用「+」開始她的輸入。 Excel比評估和增加=然後顯示可怕的?name#錯誤。該錯誤是錯誤2029VBA字符串衛生
我嘗試使用
If IsError(C.Value) Then
C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare)
End If
但是,這並不讓我在任何地方。
有什麼建議嗎?
我從Oracle數據庫導入數據並使用Excel從中創建一些報告。最近我們的一個數據錄入人員已經開始用「+」開始她的輸入。 Excel比評估和增加=然後顯示可怕的?name#錯誤。該錯誤是錯誤2029VBA字符串衛生
我嘗試使用
If IsError(C.Value) Then
C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare)
End If
但是,這並不讓我在任何地方。
有什麼建議嗎?
如果你有一個文本的數據/ 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
方法
Excel有它自己的替換功能:
ActiveSheet.Cells.Replace What:="=+", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
只是另外一件事情,它應該是:
If IsError(C.Value) Then
C.Value = Replace(C.Formula, "=+", "", 1, -1, vbTextCompare)
End If
這是因爲= +是存儲在公式屬性中,而不是值...如果您不想在VBA中自行清理,可以將替換(...)分配給C.Value或C.Formula
當我運行我得到運行時錯誤'438'Obeject dosen「t支持這個屬性或方法OD – CABecker 2009-02-06 19:45:09
哎呀 - 與「細胞」再試一次 - 它返回 – 2009-02-06 19:53:54