このサイト『インストラクターのネタ帳』のアクセスログを眺めていて、
「shape.topleftcell.addressとは」
という検索キーワードに気づきました。
ShapeオブジェクトのTopLeftCellプロパティを使ったサンプルマクロ
参考になりそうな簡単なコードをご紹介しましょう。
アクティブなワークシートに、四角形を1つだけ挿入して、以下のExcelマクロを実行してください。
Dim shp As Shape
Set shp = ActiveSheet.Shapes(1)
Dim rng As Range
Set rng = shp.TopLeftCell
End Sub
例えば下図のように、B2セルからD4セルにかけて四角形が存在しているときに、上記のマクロを実行すると、
四角形の左上のセル(TopLeftCell)のセル番地(Address)「$B$2」が、イミディエイトウィンドウに出力されます。
サンプルマクロで利用しているオブジェクト式
ワークシート上に存在する図形の左上の位置にあるセルを表す、
Rangeオブジェクトを取得するのが、
Dim rng As Range Set rng = shp.TopLeftCell
の部分で使われている、ShapeオブジェクトのTopLeftCellプロパティです。
Shape.TopLeftCellプロパティはRangeオブジェクトを返しますから、「.TopLeftCell.Address」は、結局RangeオブジェクトのAddressプロパティを取得している式です。
Range.Addressプロパティの2つの引数にFalseを指定して、
Debug.Print rng.Address(False, False)
とすれば、相対参照でセル番地を取得できます。
最終更新日時:2022-09-09 15:09
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » TopLeftCell.Addressとは