我试图从动态数组中调用一个值,以供以后在VBA函数中使用,但是我不能在不抛出数组的情况下调用它。怎么了?
我尝试更改数组类型和调用方法,但是错误不断弹出。
Dim lastColumn As Integer
Dim defaultWidth As Double
defaultWidth = 8.11
lastColumn = 30
'Declare array for column width
Dim widthArray() As Double
ReDim widthArray(lastColumn)
For c = 1 To lastColumn
widthArray(c) = defaultWidth
Next c
MsgBox (widthArray(c)) ' error is thrown here
它说
“下标超出范围。”
答案 0 :(得分:1)
首先要注意的是,您实际上并未填充数组的第一个元素,即querySelector
。也就是说,除非您指定了Option Base 1
。
第二,如果在循环终止后检查widthArray(0)
的值,您会发现它实际上是c
。这是因为,根据For...Next
文档:
执行完循环中的所有语句后,将 step 添加到计数器。此时,要么再次执行循环中的语句(基于导致循环最初执行的同一测试),要么退出循环,并继续执行
31
语句之后的语句。
在这种情况下,Next
增至31,但是循环终止。这样您将获得
下标超出范围错误。
不确定要执行的操作,但可以使用Ubound
:
c