VBAで配列を理解する
① 配列の基本的な概念
配列とは、同一のデータ型の値を一つの変数名で管理するためのデータ構造です。
VBAで配列を使用することにより、複数のデータを効率的に処理することが可能になります。
配列は、特定のタスクを実行する際に必要なデータを一箇所にまとめて保持するために用いられ、データの集合体として機能します。
② 配列の宣言と初期化
配列の宣言にはDimステートメントを使用し、配列のサイズを定義します。
例えば、Dim MyArray(5) As Integer
は、6つの整数型の要素を持つ配列を宣言します。
要素番号に5と書くと、0から始まり5までなので、要素の数は5つではなく6つなので注意してください。
Dim MyArray(5) As Integer ' 6つの要素を持つ配列を宣言
MyArray(0) = 20
MyArray(1) = 21
MyArray(2) = 22
MyArray(3) = 23
MyArray(4) = 24
MyArray(5) = 25
初期化には、配列の各要素に値を割り当てることで行います。配列の要素は、添え字を使用してアクセスできます。
③ 配列の要素へのアクセス
配列の要素へのアクセスは、添え字を使用して行います。例えば、MyArray(0)
は配列の最初の要素にアクセスする方法です。
VBAでは、配列の添え字は通常0から始まりますが、Option Base 1
ステートメントを使用すると1から始まるように変更できます。
配列の操作と活用
① 配列のループ処理
配列の要素に対する繰り返し処理は、Forループを使用して行います。
例えば、For i = 0 To UBound(MyArray)
ステートメントは、配列の最初の要素から最後の要素までループします。このように配列とループを組み合わせることで、効率的なデータ処理が可能になります。
② 配列の動的再定義
配列のサイズは、ReDimステートメントを使用して動的に変更できます。
Preserve
キーワードを使用すると、既存のデータを保持したまま配列のサイズを変更できます。ただし、配列の最後の次元のサイズのみ変更可能です。
③ 多次元配列の利用
VBAでは2次元以上の多次元配列も使用できます。多次元配列は、表やマトリックスのようなデータ構造を扱う際に便利です。
例えば、Dim MyMatrix(5, 5) As Integer
は、6行6列の2次元整数型配列を宣言します。
配列とワークシートの連携
① 配列とセル範囲の相互作用
VBAの配列はExcelのセル範囲と相互にデータをやり取りできます。
例えば、MyArray = Range("A1:A5").Value
は、セル範囲A1:A5のデータを配列に格納します。
逆に、Range("A1:A5").Value = MyArray
は配列のデータをセル範囲に転送します。
② 配列の応用例
配列は、大量のデータ処理、複雑な数学的計算、データ集計など、様々な場面で活用できます。
例えば、一連のセルからデータを収集し、そのデータに基づいて計算を行い、結果を別のセル範囲に出力するといった処理が容易に行えます。
これにより、VBAを使ってExcelデータをより効率的かつ柔軟に扱うことが可能になります。

サンプルコード
1次元配列の例
1次元配列は、一列のデータを格納するのに適しています。
Sub ExampleOneDimensionalArray()
Dim MyArray(5) As Integer ' 6つの要素を持つ配列を宣言
Dim i As Integer
' 配列に値を代入
For i = 0 To 5
MyArray(i) = i * 10
Next i
' 配列の値を表示
For i = 0 To 5
Debug.Print MyArray(i)
Next i
End Sub
Sub StaticStringArrayDemo()
' 3つの文字列を格納できる静的配列を宣言
Dim daysOfWeek(1 To 3) As String
' 配列に値を代入
daysOfWeek(1) = "月曜日"
daysOfWeek(2) = "火曜日"
daysOfWeek(3) = "水曜日"
' 配列の内容を表示
Dim i As Integer
For i = 1 To 3
Debug.Print daysOfWeek(i)
Next i
End Sub
2次元配列の例
2次元配列は、表形式のデータを格納するのに適しています。
Sub ExampleTwoDimensionalArray()
Dim MyArray(3, 2) As Integer ' 4行3列の配列を宣言
Dim i As Integer, j As Integer
' 配列に値を代入
For i = 0 To 3
For j = 0 To 2
MyArray(i, j) = i * j
Next j
Next i
' 配列の値を表示
For i = 0 To 3
For j = 0 To 2
Debug.Print MyArray(i, j)
Next j
Next i
End Sub
動的配列の例
動的配列では、ReDim
ステートメントを使用して、実行時に配列のサイズを変更できます。
Sub ExampleDynamicArray()
Dim MyArray() As Integer
ReDim MyArray(5) ' 配列のサイズを6に設定
Dim i As Integer
' 配列に値を代入
For i = 0 To 5
MyArray(i) = i * 5
Next i
' 配列のサイズを変更
ReDim Preserve MyArray(10) ' サイズを11に変更しつつ、既存のデータを保持
' 配列の値を表示
For i = 0 To 10
If i <= 5 Then
Debug.Print MyArray(i)
Else
Debug.Print "新しい要素: " & MyArray(i)
End If
Next i
End Sub
Sub DynamicStringArrayDemo()
' 動的配列を宣言
Dim fruits() As String
' 配列のサイズを実行時に設定
ReDim fruits(1 To 4)
' 配列に値を代入
fruits(1) = "リンゴ"
fruits(2) = "バナナ"
fruits(3) = "オレンジ"
fruits(4) = "メロン"
' 配列の内容を表示
Dim i As Integer
For i = LBound(fruits) To UBound(fruits)
Debug.Print fruits(i)
Next i
End Sub



これらのサンプルコードを通じて、VBAでの配列の宣言、初期化、アクセス方法などの基本を理解し、実際にプログラムで配列を使ってみてください。