
私は主に 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
monthsArr
2 次元配列 に再次元化しました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 ベースとして使用する必要があります。