思っていた挙動と違って苦戦した、VBAでの配列操作。
復習がてらおさらいしておこうと思います。
まずは宣言方法。
Dim 配列名(要素数) As データ型
2次元配列なら、
例えば、10行5列の2次元配列を宣言する場合は・・
Dim myArray(1 To 10, 1 To 5) As Integer
数字の範囲をToで表現するのは、VBAっぽいですね。
For文の時とか。
これまたハマった動的配列。
プログラムの中で配列に格納される要素が増減するパターン。
まず宣言時には、要素数を指定せずに、Variant型にしておく必要があります。
Dim 配列名() As Variant
配列名 = Array(要素(0), 要素(1), ・・・)
その後、要素数の変化が発生する際には、再度宣言。
ReDim 配列名(添字の上限値, ・・・) As Variant
これには更に注意が必要で・・・
・Reの名前の通り、初期化が伴う
・値を保持したい場合には、ReDimに続けてPreserveを追記する
・そもそも、最高次元のみ変更可。(行列で言う列のみ)
なかなかこの辺のポイントに辿り着かず、
書いてはエラー書いてはエラーに陥りました。
まぁ分かってしまえば、もう忘れない!・・ハズ!