For Next ステートメントによる二次元配列の反復

このマクロは、二次元配列の各要素を For EachFor 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つの異なる方法で示しています。

  1. 二次元配列の宣言と初期化:
    • Dim numbers(1, 1) As Long で、2×2の二次元配列を宣言しています。配列の各要素は (行, 列) の形式で指定し、対応する値を代入しています。
  2. For Each ステートメントによる反復処理:
    • For Each number In numbers を使って、配列 numbers の全要素を順に取り出し、その値を Debug.Print でデバッグウィンドウに出力します。この方法は、配列内の全要素に対して処理を行いたい場合に便利です。
  3. 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 EachFor Next の両方のループを使うことで、配列処理の柔軟性を理解できます。

Follow me!