セル範囲のタイプ別ループ処理
タイトルのマクロは、以下。
' セル範囲のタイプ別ループ処理
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)。
ウィンドウの改行:
- デバッグ出力ウィンドウに改行を追加します。各ループ処理の終了後に行われます。