2014-05-09 65 views
0

我用下面的代碼中插入從我的結果集到我的電子表格值不處理「壞」字:VBA插入值到電子表格

Rst.MoveFirst 
    Do While Rst.EOF = False 
    For i = 0 To Rst.Fields.Count - 1 
     ActiveCell.Value = Rst.Fields(i).Value 'insert value into cell 
     ActiveCell.Offset(0, 1).Activate  'move to next cell for next value 
    Next i 
    ActiveCell.Offset(1, -i).Activate   'move to next row for next record 
    Rst.MoveNext 
    Loop 

我遇到的問題是,一些用戶使用=作爲輸入中的第一個字符,並且excel不像那樣(「應用程序定義的或對象定義的錯誤」)。

我已經看到Entering '=' as the first character in a cell的解決方法,但我不想將'應用到每個字段,理想情況下只有在以=開頭時才適用。

我需要一個也適用於空值的解決方案。我嘗試了一堆不同的組合(IsNull,IsDBNull),但我似乎無法找到可行的組合。

+1

您顯示的鏈接還有一個答案,建議在添加以'='開頭的值之前將單元格格式設置爲「文本」,這對您不起作用? –

+0

偉大的呼喚,@TimWilliams - 我將用戶輸入單元格的範圍設置爲明文,VBA很高興!如果您想將其轉換爲答案,我會接受它。否則,可能只是關閉重複? – pennstatephil

回答

0

正如@timwilliams建議的,我使用this answer來設置範圍的格式(看起來比@ tompage的逐個單元格方法更有效)到文本。

0

我坐在一臺Linux機器所以我現在不能對此進行測試,但是從內存...

如果您設置單元格的數字格式爲「@」您指定的值,那麼前應該意味着它取值爲文字字符串

這也意味着,「0131」將不會被更改爲131

ActiveCell.NumberFormat = "@" ' This Cell will hold text 
ActiveCell.Value = Rst.Fields(i).Value 'insert value into cell 

你可以把格式化基於Rst.Fields IF語句中( i)。如果您只想對文本字段執行此操作,請鍵入

相關問題