セル範囲のアドレスを取得

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

' セル範囲のアドレスを取得
Private Sub Range_Address_Property()
    ' セル範囲A1:C3に対する操作
    With Sheet1.Range("A1:C3")

        Debug.Print .Address
        ' セル範囲のアドレスを出力する(デフォルトの形式)
        ' $A$1:$C$3
        
        Debug.Print .Address(False, False)
        ' セル範囲のアドレスを出力する(絶対参照記号なし)
        ' A1:C3
        
        Debug.Print .Address(ReferenceStyle:=xlR1C1)
        ' セル範囲のアドレスを出力する(R1C1形式)
        ' R1C1:R3C3
        
        Debug.Print .Address(False, False, _
            ReferenceStyle:=xlR1C1, relativeto:=Sheet1.Range("A1"))
        ' セル範囲のアドレスを出力する(絶対参照記号なし、R1C1形式、基準セル指定)
        ' RC:R[2]C[2]
    End With
End Sub

各行の説明

  1. With Sheet1.Range("A1:C3"):
    • Sheet1 のセル範囲 A1:C3 に対して操作を行います。
  2. Debug.Print .Address:
    • セル範囲のアドレスをデフォルトの形式で出力します。デフォルト形式は絶対参照を含む形式です。
    • 出力例: "$A$1:$C$3"
  3. Debug.Print .Address(False, False):
    • セル範囲のアドレスを絶対参照記号なしで出力します。つまり、行と列の両方が相対参照になります。
    • 出力例: "A1:C3"
  4. Debug.Print .Address(ReferenceStyle:=xlR1C1):
    • セル範囲のアドレスを R1C1 形式で出力します。R1C1形式は行と列を数値で表す形式です。
    • 出力例: "R1C1:R3C3"
  5. Debug.Print .Address(False, False, ReferenceStyle:=xlR1C1, relativeto:=Sheet1.Range("A1")):
    • セル範囲のアドレスを絶対参照記号なし、R1C1形式、かつ指定された基準セル(ここでは Sheet1.Range("A1"))に対する相対参照として出力します。
    • 出力例: "RC:R[2]C[2]"

各パラメータの意味

  • RowAbsoluteColumnAbsolute(最初の2つの引数):
    • これらは省略可能で、それぞれ True(絶対参照)または False(相対参照)を指定します。
    • デフォルトは True です。
  • ReferenceStyle:
    • xlA1(デフォルト)または xlR1C1 を指定します。
    • xlA1 は A1 形式(例: $A$1)、xlR1C1 は R1C1 形式(例: R1C1)です。
  • relativeto:
    • 省略可能で、基準セルを指定します。
    • 基準セルに対して相対的な参照を指定する場合に使用します。

このプロシージャは、ExcelのVBAでセル範囲のアドレスを様々な形式で取得する方法を学ぶためのものです。各形式の違いを理解することで、より柔軟にセル範囲の操作を行うことができます。

Follow me!

Excel

前の記事

Range クラスのメンバー
Excel

次の記事

セル範囲のタイプ別要素数