在VBA中声明数组,异常

在VBA中声明数组,异常,vba,Vba,在下面的代码段中,VBA告诉我,boundary必须是Dim vals(1到boundary)上的一个常量作为Variant行。这是我第一次看到这个。这里发生了什么事 Dim boundary As Integer boundary = distrib.Count Dim vals(1 To boundary) As Variant For i = 1 To boundary vals(i) = distrib(i, 3) + distrib(i, 4) Next i distrib

在下面的代码段中,VBA告诉我,
boundary
必须是
Dim vals(1到boundary)上的一个常量作为Variant
行。这是我第一次看到这个。这里发生了什么事

Dim boundary As Integer
boundary = distrib.Count

Dim vals(1 To boundary) As Variant
For i = 1 To boundary
    vals(i) = distrib(i, 3) + distrib(i, 4)
Next i

distrib
是声明为variant的数组

您不能声明具有非常量值的固定大小数组;相反,您需要将其声明为动态数组(通过省略大小),然后将其重新定尺寸到所需的边界

Dim vals() As Variant
ReDim vals(1 To boundary)

不能在声明变量的同一操作中分配数据。请改用
Redim

Dim boundary As Long
boundary = 10
Dim vals() As Variant
ReDim vals(1 To boundary)

最初可以使用变量边界声明数组,但可以重新定义为变量:

Dim boundary As Integer
boundary = distrib.Count

Dim vals() as Variant
ReDim vals(1 To boundary)
For i = 1 To boundary
    vals(i) = distrib(i, 3) + distrib(i, 4)
Next i