配列の操作
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