2010年1月17日日曜日

VBAでの配列

VBAの配列は、JavaやCとは異なり要素数を指定するのではなく、添え字の最大数を指定するようになっている。なので、配列を0から始めた場合は0~最大数となりJavaやCの配列より要素数が1大きくなるのである。このことをきちんと理解していないと、思わぬ不具合が埋め込んでしまう可能性があるので注意が必要である。

個人的には、「Option Base」ステートメントを使用して配列の最小値を1に変更してあげて、添え字の最大数と要素数をイコールにしてあげることが好ましいと思う。


【Option Baseステートメントの構文】
・構文
Option Base [0|1]
・使い方
プロシージャや、クラスの先頭に記述する。変数宣言や関数のあとに記述することはNG。なお、Option Baseを記述しない場合はデフォルトの0が適用される。
また、最小値を0か1以外にしたい場合には、配列宣言時に「(2 To 5)」などとすることにより可能である。使う必要に迫られたことがないので使ったことはないが・・・・。




【実際の挙動】
・「Option Base」を記述しない場合、または「Option Base 0」を記述した場合
配列の要素は0~5となっており、サイズは6となる。






・「Option Base 1」を記述した場合
配列の要素は1~5となっており、サイズは5となる。






・配列の宣言時に明示的に初期値を指定した場合
配列の宣言時に最小値を指定することも可能。「4 to 5」と指定すると配列は4と5の要素のみをもつ。