2016-08-19 73 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

该数据没有空单元格。我在另一个宏中使用相同的代码,并且在那里工作得很好,但是在我的新宏中,似乎字符串有限制。 –