【发布时间】:2017-11-22 06:54:12
【问题描述】:
我正在尝试在 excel 中拆分一个字符串,然后将字符串的每个元素写入另一张表的一列,但我似乎无法在下标超出范围错误之前完成循环。
Sub S1()
Dim Wb As Workbook
Dim rowValue() As String
Dim i As Variant
For i = 2 To 15500
With Worksheets(1)
Value2 = Worksheets(1).Cells(i, 1)
rowValue = Split(Worksheets(1).Cells(i, 1).Value, " ")
rowValue(11) = rowValue(11) & " " & rowValue(12) & " " & rowValue(13)
arraySize = UBound(rowValue) - LBound(rowValue) + 1
If arraySize > 3 Then
For x = 0 To arraySize
'Place the split values into 1 column each
Worksheets("Sheet2").Cells(i, x + 1).Value = rowValue(x)
Next x
Else
'do nothing
End If
End With
Next i
上面是我的代码,第一张表中有大约 15500 行。从第 1 行到第 29 行一切正常,但之后出现运行时错误 9,下标超出范围。
谁知道为什么循环在 29 行后停止?
【问题讨论】:
-
显示您的完整代码,包括变量声明。在哪一行弹出错误?
-
这取决于:我们看不到第 29 行的内容,也看不到任何与此相关的示例数据!
-
更新了代码。错误在于行 -> Worksheets("Sheet2").Cells(i, x + 1).Value = rowValue(x)
-
工作表 2 只是一张空工作表。
-
我认为第 29 行中的值没有一个长字符串,其中您有 13 个用空格分隔的单词。当代码停止时,右键单击 rowValue 并单击添加监视并检查有多少个值有没有在数组中。