セル範囲の領域を取得 Areas
タイトルのマクロは、以下です。
' セル範囲の領域を取得 Areas
Private Sub Areas_Range()
' セル範囲A1:B2, D1:F3に対する操作
With Sheet1.Range("A1:B2, D1:F3")
' セル範囲内の領域の数を出力する
Debug.Print .Areas.Count
' 結果: 2
' Range("A1:B2, D1:F3") は2つの別々の範囲(領域)を持っています。
' これらの範囲の数を .Areas.Count で取得します。
' 最初の領域のアドレスを出力する
Debug.Print .Areas(1).Address
' 結果: $A$1:$B$2
' 最初の領域(範囲 A1:B2)のアドレスを取得します。
' 2番目の領域のアドレスを出力する
Debug.Print .Areas(2).Address
' 結果: $D$1:$F$3
' 2番目の領域(範囲 D1:F3)のアドレスを取得します。
' セル範囲の親オブジェクト(シート)のアドレスを出力する
Debug.Print .Areas.Parent.Address
' 結果: $A$1:$B$2,$D$1:$F$3
' Parent プロパティは、指定したオブジェクトの親オブジェクトを返します。
' この場合、親オブジェクトは範囲全体(A1:B2, D1:F3)です。
' 各領域のアドレスを出力する
Dim r As Range
For Each r In .Areas
Debug.Print r.Address
' 各領域のアドレスをループして出力します。
' 結果:
' $A$1:$B$2
' $D$1:$F$3
Next r
End With
End Sub
コードの説明
- サブルーチンの宣言:
- このサブルーチンは、セル範囲内の異なる領域(連続していない範囲)を操作するために使用されます。
- With ステートメント:
With
ステートメントを使用して、範囲 “A1” と “D1” に対する一連の操作をグループ化します。
- 領域の数を取得して表示:
Areas
プロパティは、範囲内の異なる領域のコレクションを返します。Count
プロパティを使用して、これらの領域の数を取得し、デバッグ出力ウィンドウに表示します。- 結果は
2
です。
- 各領域のアドレスを取得して表示:
Areas(1)
は最初の領域を返し、そのAddress
プロパティを使用してアドレスを取得します。Areas(2)
は2番目の領域を返し、そのAddress
プロパティを使用してアドレスを取得します。- 結果はそれぞれ
$A$1:$B$2
と$D$1:$F$3
です。
- 親オブジェクトのアドレスを取得して表示:
Parent
プロパティは、指定されたオブジェクトの親オブジェクトを返します。- この場合、親オブジェクトは範囲全体(A1, D1)です。
- 結果は
$A$1:$B$2,$D$1:$F$3
です。
- 各領域のアドレスをループして表示:
For Each
ループを使用して、Areas
コレクション内の各領域をループします。- 各領域の
Address
プロパティを使用してアドレスを取得し、デバッグ出力ウィンドウに表示します。 - 結果は
$A$1:$B$2
と$D$1:$F$3
です。