配列の操作
VBA には変数とデータ型がありますが、その中でも Variant 型という汎用的なデータ型があります。
Variant 型は、文字列、数値、日付、真偽値など、様々なデータ型を格納することができます。また、Variant 型には配列として複数のデータを 1 つの変数に格納することもできます。
このページでは VBA における配列の定義と操作方法について解説します。
配列の定義
配列を定義するには、前述した通り Variant 型の変数を宣言し、その変数に配列を代入します。
Dim fruits As Variant
fruits = Array("apple", "banana", "orange")
上記の例では、fruitsという変数にArray関数を使って"apple", "banana", "orange"という 3 つの要素を持つ配列を代入しています。
上記のデータから特定の位置の要素を取得するには、配列のインデックスを指定します。インデックスは 0 から始まります。
fruits(0) ' => "apple"
配列には文字列だけでなく、数値や真偽値も格納することができます。
Dim numbers As Variant
numbers = Array(1, 2, 3)
numbers(1) ' => 2
2 次元配列
配列の要素として、さらに配列を格納することで、2 次元配列を定義することができます。
Dim matrix As Variant
matrix = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))
上記の例では、matrixという変数に 3 つの要素を持つ配列を代入しています。それぞれの要素は 3 つの要素を持つ配列です。
matrix(0)(0) ' => 1
matrix(1)(1) ' => 5
配列の操作
配列には、要素の追加、削除などが可能ですが、少し複雑な操作が必要です。
要素の追加
配列に要素を追加するには、ReDimステートメントを使って配列のサイズを変更し、新しい要素を追加します。
ReDim Preserve fruits(3)
fruits(3) = "grape"
ReDimを使用せずに要素を追加することはできません。また、ReDimを使用して配列のサイズを変更すると、元の配列のデータが消えてしまうため、Preserveキーワードを使って元のデータを保持するようにします。
要素の削除
配列から要素を削除するには、ReDimステートメントを使って配列のサイズを変更し、削除したい要素を削除します。
ReDim Preserve fruits(2)
特定の位置の要素を削除する必要がある場合は、要素を取り除いた配列を再定義する必要があります。
For Eachステートメントを使った配列の操作
配列の各要素に対して処理を行う場合は、For Eachステートメントを使うと便利です。
Dim fruit As Variant
For Each fruit In fruits
Debug.Print fruit
Next fruit
上記の例では、fruits配列の各要素をfruitという変数に代入して、Debug.Printステートメントで出力しています。
実行すると、以下のように出力されます。
apple
banana
orange