VBAでは配列ではなくCollectionを積極的に使ったほうが良い。
動的配列を宣言してReDimするのにほとんどメリットはない。
VBAのCollectionを使う上で、
間違いやすく忘れやすいのが、
Collectionのインデックスは1からであるということ。
Option Explicit Sub CollectionTest() Dim c As Collection Set c = New Collection c.Add "hoge" 'Debug.Print c(0) ' => 実行時エラー Debug.Print c(1) ' => hoge End Sub
CollectionにAddしていって、
インデックスで0を指定すると以下の実行時エラーとなる。
実行時エラー ‘9’:
インデックスが有効範囲にありません。
配列は0からなので非常に紛らわしい。