「インデックスが範囲外です」というエラーが繰り返し発生します

「インデックスが範囲外です」というエラーが繰り返し発生します

私は主に 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

Count は 10 に等しい (msgBox で確認) ので、months は長さ 10 の ArrayList です。months の値を配列に入れて、その配列をオートフィルターで使用しようとしています。次の行でエラーが発生し続けます:

monthsArr(j) = months.Item(j)

VBA はコレクションに 1 インデックスを使用すると思っていましたが、よくわかりません。なぜこのエラーが繰り返し発生するのか知っている人はいますか? よろしくお願いします

答え1

monthsArr2 次元配列 に再次元化しましたReDim monthsArr(1, count)。2 次元配列のままにしておく場合は、要素を割り当てるときに、両方の次元で配列のどの部分であるかも示さなければなりません。 は 1 つだけ使用しています。配列の 2 番目の次元は のようmonthsArr(j) = months.Item(j)になります。monthsArr(j,i) = months.Item(j)i

また、配列の最初の値は 1 ではなく 0 であることに注意してください。したがって、 を宣言するとmonthsArr(1,count)、最初の次元には 2 つの要素/項目があり、2 番目の次元には count + 1 個の要素があることを意味します。

2 次元配列ではなく 1 次元配列である場合は、ReDim monthsArr(count)または をReDim monthsArr(count-1)0 ベースとして使用する必要があります。

関連情報