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个非数字字符时,您都会遇到此错误。