如何正确地从动态数组调用值? -Excel VBA

时间:2019-05-17 03:01:17

标签: excel vba

我试图从动态数组中调用一个值,以供以后在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

它说

  

“下标超出范围。”

1 个答案:

答案 0 :(得分:1)

首先要注意的是,您实际上并未填充数组的第一个元素,即querySelector。也就是说,除非您指定了Option Base 1

第二,如果在循环终止后检查widthArray(0)的值,您会发现它实际上是c。这是因为,根据For...Next文档:

  

执行完循环中的所有语句后,将 step 添加到计数器。此时,要么再次执行循环中的语句(基于导致循环最初执行的同一测试),要么退出循环,并继续执行31语句之后的语句。

在这种情况下,Next增至31,但是循环终止。这样您将获得

  

下标超出范围错误。

不确定要执行的操作,但可以使用Ubound

c