所以我主要使用 java 和 C++,而 VBA 对我来说非常新。我很困惑为什么我总是收到错误 9 - “索引超出范围”。代码如下:
Dim count As Integer
Dim j As Integer
count = months.count
Dim monthsArr() As String
ReDim monthsArr(1, count)
For j = 1 To count
monthsArr(j) = months.Item(j)
Next j
计数等于 10(我用 msgBox 检查过),因此 months 是一个长度为 10 的 ArrayList。我试图将 months 的值放入一个数组中,这样我就可以在自动过滤器上使用该数组。我在这行代码中一直收到错误:
monthsArr(j) = months.Item(j)
我以为 VBA 使用 1 索引来处理集合,但我真的不知道。有人知道为什么我一直收到此错误吗?谢谢
答案1
您已将其重新定monthsArr
为二维数组ReDim monthsArr(1, count)
。如果它仍应为二维数组,则在为其分配元素时,还必须显示数组在两个维度上的哪一部分。您只使用了一个:monthsArr(j) = months.Item(j)
。它应该类似于数组的第二维在monthsArr(j,i) = months.Item(j)
哪里。i
另请注意,0 是数组中的第一个,而不是 1。因此,当您声明时monthsArr(1,count)
,这意味着第一维有 2 个元素/项目,而第二维将有 count + 1 个元素。
如果它不是一个二维数组而是一个一维数组,那么您应该使用:ReDim monthsArr(count)
或ReDim monthsArr(count-1)
作为其基于 0 的数组。