2016-08-19 72 views
0

我試圖複製一些8位數字以用於SQL搜索。Excel-VBA字符串操作問題

SQL查詢給了我錯誤,並且在一些調試後我發現字符串不包含所有的數據。似乎在25個左右的數字後,我的for循環停止輸入數據,就好像字符串已滿。

感謝您的幫助......

Lots = "" 
For iRow = 2 To 500 
    If IsEmpty(Sheets("Filtered Data").Cells(iRow, 2)) Then Exit For 
    Lots = Lots & ",'" & Sheets("Filtered Data").Cells(iRow, 2).value & "'" 
Next iRow 

Lots = "(" & Mid(Lots, 2, Len(Lots) - 1) & ")" 

回答

0

你應該張貼您的數據提高了錯誤

爲,而你可以考慮下面的代碼,以集結串利用Join()功能

Dim Lots As String 

With Worksheets("Filtered Data") '<--| change "Filtered Data" with your actual worksheet name 
    With .Range("B2", .Cells(.Rows.Count, 2).End(xlUp)) '<-- consider its column "B" cells from row 2 down to last non empty one 
     Lots = "('" & Join(Application.Transpose(.Value), "','") & "')" '<-- build up the string 
    End With 
End With 

此假設所有的非空單元中「B」列是連續的(即,非空白細胞在非空白者之間),但它可以被容易地修改應該不是這種情況

+0

我試過你的代碼,但問題仍然存在。 Lots字符串只收集前26個數字,不會廣告finel「')」。我很抱歉,但我無法上傳所有的代碼或我正在處理的數據。 –

+0

您只能上傳前27個號碼,以幫助人們幫助您 – user3598756

+0

抱歉,無法上傳我的數據(IP問題)。但是,這些數字並不重要,只需在27個8位數字上進行試用即可。 –

0

你的代碼工作正常。想必你有這使得它退出循環列空的細胞....

+0

您能否將此添加爲評論t問題而不是答案? –

+0

顯然不是,如果你沒有50的聲望 –

+0

該數據沒有空單元格。我在另一個宏中使用相同的代碼,並且在那裏工作得很好,但是在我的新宏中,似乎字符串有限制。 –