Excel VBA Range.Addressプロパティの絶対参照($)を外す方法

スポンサーリンク

Range.Addressプロパティの絶対参照を外す方法

やりたい事

Range.Addressの既定値は絶対参照で返ってきます。絶対参照では使いにくいこともあると思うので「$」マークのついてない形で返却する方法を解説します。

絶対参照を返却するパターン

絶対参照を外した状態で返却するパターン

絶対参照を外すサンプルコード

「RowAbsolute」「ColumnAbsolute」の設定値をFalseにすると絶対参照が外れます。

Sub getShapeCell()
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 100, 100).Name = "四角"
    Range("D1") = ActiveSheet.Shapes("四角").TopLeftCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Range("D2") = ActiveSheet.Shapes("四角").BottomRightCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
End Sub

構文

expression は Range オブジェクトを表す変数です。

expression.Address (RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
名前必須/オプション説明
RowAbsoluteOptional行部分の参照を絶対参照として返すには、Trueを指定します。既定値はTrueです。
ColumnAbsoluteOptional列部分の参照を絶対参照として返すには、Trueを指定します。既定値はTrueです。
ReferenceStyle省略可能参照形式を指定します。既定値はxlA1です。
ExternalOptional外部参照を返すには、Trueを指定します。ローカル参照を返すには、Falseを指定します。既定値はFalseです。
RelativeToOptionalRowAbsoluteおよびColumnAbsolute がFalseであるときに、ReferenceStyleがxlR1C1である場合は、相対参照の開始点を含める必要があります。この引数は開始点を定義するRange オブジェクトです。

参考資料

Docs

コメント

タイトルとURLをコピーしました