セル範囲のタイプ別ループ処理

タイトルのマクロは、以下。

' セル範囲のタイプ別ループ処理
Private Sub Cells_Rows_Columns_ForEach()
    Dim r As Range
    ' セル範囲A1:D3に対する操作
    With Sheet1.Range("A1:D3")
        ' セル単位のループ処理
        For Each r In .Cells
            ' 各セルのアドレスをデバッグ出力ウィンドウに表示する
            ' ここでは、セルのアドレスを相対参照なしで表示する(例:A1、B1)
            Debug.Print r.Address(False, False); " ";
            ' 出力例: A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3
        Next r
        ' デバッグ出力ウィンドウに改行を挿入
        Debug.Print
        
        ' 行単位のループ処理
        For Each r In .Rows
            ' 各行のアドレスをデバッグ出力ウィンドウに表示する
            ' ここでは、行の範囲を相対参照なしで表示する(例:A1:D1、A2:D2)
            Debug.Print r.Address(False, False); " ";
            ' 出力例: A1:D1 A2:D2 A3:D3
        Next r
        ' デバッグ出力ウィンドウに改行を挿入
        Debug.Print
        
        ' 列単位のループ処理
        For Each r In .Columns
            ' 各列のアドレスをデバッグ出力ウィンドウに表示する
            ' ここでは、列の範囲を相対参照なしで表示する(例:A1:A3、B1:B3)
            Debug.Print r.Address(False, False); " ";
            ' 出力例: A1:A3 B1:B3 C1:C3 D1:D3
        Next r
    End With
End Sub

コードの説明

サブルーチンの宣言:

  • このサブルーチンは、セル、行、および列をループする方法を示すために使用されます。

変数の宣言:

  • r はループ内で使用される Range 型の変数です。

セル範囲の指定:

  • With ステートメントを使用して、セル範囲 “A1” に対する一連の操作をグループ化します。

セル単位のループ処理:

  • For Each ループを使用して、指定範囲内の各セルをループします。
  • Debug.Print は、各セルのアドレスをデバッグ出力ウィンドウに表示します。Address(False, False) は、セルのアドレスを相対参照なしで取得することを示します(例:A1、B1、C1)。
  • Debug.Print は、セルのアドレスを出力するごとにスペースを追加します。

行単位のループ処理:

  • For Each ループを使用して、指定範囲内の各行をループします。
  • Debug.Print は、各行のアドレスをデバッグ出力ウィンドウに表示します。Address(False, False) は、行のアドレスを相対参照なしで取得することを示します(例:A1、A2)。

列単位のループ処理:

  • For Each ループを使用して、指定範囲内の各列をループします。
  • Debug.Print は、各列のアドレスをデバッグ出力ウィンドウに表示します。Address(False, False) は、列のアドレスを相対参照なしで取得することを示します(例:A1、B1)。

ウィンドウの改行:

  • デバッグ出力ウィンドウに改行を追加します。各ループ処理の終了後に行われます。

Follow me!