Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » ShapeのAddress(セル番地)を取得したい

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2110 ビルド14527.20234 Microsoft Store)

「shape.address VBA」
といった検索キーワードで時折アクセスがあることに気がつきました。

ShapeオブジェクトのAddress(セル番地)を取得しようと、Excel VBAの

MsgBox ActiveSheet.Shapes(1).Address

といったコードを実行したものの、

実行時エラー '438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

エラーが発生した方による検索かな、と想像しています。

ShapeにAddressプロパティは存在しない

セルを表すRangeオブジェクトには、セル番地を取得するためのAddressプロパティがありますが、図形を表すShapeオブジェクトにAddressプロパティは用意されていません。

Shapeからセル番地を取得するには、Rangeオブジェクトを取得して、RangeオブジェクトのAddressプロパティを利用します。

ShapeのAddressを取得するサンプルマクロ

Shapeが存在するワークシートがアクティブな状態で、以下のSubプロシージャを実行してください。

Sub ShapeのAddressを取得したい()
 With ActiveSheet.Shapes(1)
  MsgBox .TopLeftCell.Address
  MsgBox .BottomRightCell.Address
 End With
End Sub

Shapes.Item(1)で取得できる図形の左上セルのアドレスと、右下セルのアドレスが、(絶対参照形式で)順番にメッセージボックスに表示されます。

相対参照形式でAddressを取得したい場合

ここで使用しているAddressは、RangeオブジェクトのAddressプロパティですから、「$」のつかない形でセル番地を取得したいのであれば、

With ActiveSheet.Shapes(1)
 MsgBox .TopLeftCell.Address(False, False)
 MsgBox .BottomRightCell.Address(False, False)
End With

としてください。

最終更新日時:2022-09-09 15:06

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » ShapeのAddress(セル番地)を取得したい

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.