セル範囲の領域を取得 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

コードの説明

  1. サブルーチンの宣言:
    • このサブルーチンは、セル範囲内の異なる領域(連続していない範囲)を操作するために使用されます。
  2. With ステートメント:
    • With ステートメントを使用して、範囲 “A1” と “D1” に対する一連の操作をグループ化します。
  3. 領域の数を取得して表示:
    • Areas プロパティは、範囲内の異なる領域のコレクションを返します。
    • Count プロパティを使用して、これらの領域の数を取得し、デバッグ出力ウィンドウに表示します。
    • 結果は 2 です。
  4. 各領域のアドレスを取得して表示:
    • Areas(1) は最初の領域を返し、その Address プロパティを使用してアドレスを取得します。
    • Areas(2) は2番目の領域を返し、その Address プロパティを使用してアドレスを取得します。
    • 結果はそれぞれ $A$1:$B$2$D$1:$F$3 です。
  5. 親オブジェクトのアドレスを取得して表示:
    • Parent プロパティは、指定されたオブジェクトの親オブジェクトを返します。
    • この場合、親オブジェクトは範囲全体(A1, D1)です。
    • 結果は $A$1:$B$2,$D$1:$F$3 です。
  6. 各領域のアドレスをループして表示:
    • For Each ループを使用して、Areas コレクション内の各領域をループします。
    • 各領域の Address プロパティを使用してアドレスを取得し、デバッグ出力ウィンドウに表示します。
    • 結果は $A$1:$B$2$D$1:$F$3 です。

Follow me!