「vba cells address 絶対参照をはずす」
「vba address 絶対参照を外す」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折見られます。
Excel VBAの、Range.Addressプロパティで返される文字列から絶対参照マーク「$」のない状態にする方法を探している方による検索です。
例えば、A1セルがアクティブなときに
MsgBox ActiveCell.Address
というコードを実行すると、「$A$1」という文字列がメッセージボックスに表示されます。
これを「A1」という文字列を表示するようにしたいということなのでしょう。
Range.Addressで絶対参照マークのついていない文字列を取得する
以下のようなコードで、Range.Addressプロパティで絶対参照マークのついていない文字列を取得することができます。
※アクティブセルのアドレスを絶対参照マークのない状態でメッセージボックスに表示する例
MsgBox ActiveCell.Address(False, False)
Range.Addressプロパティのヘルプをご覧いただくとわかるとおり、Range.Addressプロパティは引数を5つ指定できます。
このうち、
第1引数のRowAbsoluteと、
第2引数ColumnAbsoluteで、
戻りの文字列に絶対参照マークをつけるかどうかを指定できます。
両方ともFalseを指定すれば、上記のコードのとおり、絶対参照マークのない文字列が取得できます。
あまりないケースだとは思いますが、一方だけに絶対参照マークのついた複合参照の形で文字列を取得したいという場合は、
ActiveCell.Address(True, False)
ActiveCell.Address(False, True)
などと指定するわけですが、第1引数・第2引数のどちらが行でどちらが列かわかりにくいので、名前付き引数を使って
ActiveCell.Address(RowAbsolute:=False)
ActiveCell.Address(ColumnAbsolute:=False)
と指定するほうが、可読性が上がっていいでしょう。
- xlwingsのセル番地取得はRange.get_address()がaddressより高機能
- pywin32・win32com.clientでExcelのセル番地を相対参照で取得する-Range.GetAddress()
最終更新日時:2023-03-23 10:10
Home » Excel VBA Rangeオブジェクト » Excel VBAのRange.Addressで絶対参照ではなく相対参照を