![继续收到“索引超出范围”错误](https://linux22.com/image/1628886/%E7%BB%A7%E7%BB%AD%E6%94%B6%E5%88%B0%E2%80%9C%E7%B4%A2%E5%BC%95%E8%B6%85%E5%87%BA%E8%8C%83%E5%9B%B4%E2%80%9D%E9%94%99%E8%AF%AF.png)
所以我主要使用 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 的数组。