配列の操作

にメンテナンス済み

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 次元配列を定義することができます。

配列の定義(2次元配列)
Dim matrix As Variant

matrix = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))

上記の例では、matrixという変数に 3 つの要素を持つ配列を代入しています。それぞれの要素は 3 つの要素を持つ配列です。

2次元配列の要素の取得
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ステートメントを使うと便利です。

ForEachステートメントを使った配列の操作
Dim fruit As Variant

For Each fruit In fruits
  Debug.Print fruit
Next fruit

上記の例では、fruits配列の各要素をfruitという変数に代入して、Debug.Printステートメントで出力しています。

実行すると、以下のように出力されます。

apple
banana
orange
#VBA