VBA为什么我的下标超出范围?
我使用下面的代码解析字符串并将其部分设置为数组。但是,我在下面指示的行中得到一个下标超出范围的错误。我可能做错了什么VBA为什么我的下标超出范围?,vba,excel,conditional,Vba,Excel,Conditional,我使用下面的代码解析字符串并将其部分设置为数组。但是,我在下面指示的行中得到一个下标超出范围的错误。我可能做错了什么 vals = Array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "") Set r = Range("B2").End(xlDown) For Each x In Range("B2", r) k = 0 For i = 1 To Len(x) char = Mid(x
vals = Array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
Set r = Range("B2").End(xlDown)
For Each x In Range("B2", r)
k = 0
For i = 1 To Len(x)
char = Mid(x, i, 1)
Select Case Asc(char)
Case 48 To 57
' Error on line below (Run-time error9: Subscript out of range)
vals(k) = vals(k) + char
Case Else
Erase vals
k = k + 1
End Select
Next i
Set cll = x.End(xlToLeft)
cll.Value = vals(0) + "-" + vals(1) + "-" + vals(2) + "T" + vals(3) + ":" + vals(4) + ":" + vals(5) + "Z"
Next x
删除
VAL
之后,一旦它不再有效,就会出现相同的错误。删除该行后,我会收到相同的错误。显然,k
超出VAL
的允许索引的原因更多。请调试您的代码。根据代码的第一行vals=Array(“,…”)
变量vals
是一个由15个元素组成的数组,从元素0
开始,一直到元素14
。如果行vals(k)…
会给您带来问题,那么可能是k
此时是>14
。因此,任何时候B
列中的单元格包含超过15个非数字字符时,您都会遇到此错误。