For Next ステートメントによる二次元配列の反復
このマクロは、二次元配列の各要素を For Each
と For Next
ループで反復処理し、内容を出力します。
' For Next ステートメントによる二次元配列の反復
Private Sub For_Next_Array()
' 二次元配列の宣言と初期化
Dim numbers(1, 1) As Long ' 2x2の二次元配列を宣言
numbers(0, 0) = 1 ' 配列の(0,0)に1を代入
numbers(0, 1) = 2 ' 配列の(0,1)に2を代入
numbers(1, 0) = 3 ' 配列の(1,0)に3を代入
numbers(1, 1) = 4 ' 配列の(1,1)に4を代入
' 配列の要素を一つずつ処理するための変数
Dim number As Variant
' For Each ステートメントを使用して二次元配列の要素を反復処理します
For Each number In numbers
Debug.Print number ' 配列の各要素をデバッグウィンドウに出力
Next number
' インデックスを使用して二次元配列の要素を反復処理します
Dim i As Long, j As Long
' 1つ目の次元のインデックスでループ
For i = LBound(numbers) To UBound(numbers)
' 2つ目の次元のインデックスでループ
For j = LBound(numbers, 2) To UBound(numbers, 2)
Debug.Print numbers(i, j) ' 指定した要素をデバッグウィンドウに出力
Next j
Next i
End Sub
詳しい説明
このマクロでは、VBAにおける二次元配列の処理方法を2つの異なる方法で示しています。
- 二次元配列の宣言と初期化:
Dim numbers(1, 1) As Long
で、2×2の二次元配列を宣言しています。配列の各要素は(行, 列)
の形式で指定し、対応する値を代入しています。
For Each
ステートメントによる反復処理:For Each number In numbers
を使って、配列numbers
の全要素を順に取り出し、その値をDebug.Print
でデバッグウィンドウに出力します。この方法は、配列内の全要素に対して処理を行いたい場合に便利です。
For Next
ステートメントによる反復処理:For i = LBound(numbers) To UBound(numbers)
とFor j = LBound(numbers, 2) To UBound(numbers, 2)
で、配列の各次元に対するインデックスを指定してループを実行します。LBound
は配列の最小インデックスを、UBound
は最大インデックスを返します。この例では、numbers(i, j)
で特定の要素を取得し、それをデバッグウィンドウに出力します。
1
3
2
4
1
2
3
4
このマクロは、二次元配列を効率的に処理するための基本的な方法を学ぶのに役立ちます。For Each
と For Next
の両方のループを使うことで、配列処理の柔軟性を理解できます。