「vba topleftcell 行番号」
「excelvba .topleftcell.address 行番号取得」
といった検索キーワードでのアクセスが時折あります。
Excel VBAのShapeオブジェクトなどに、
左上のセルを表すRangeオブジェクトを返す、TopLeftCellプロパティがあります。
このTopLeftCellプロパティで取得したRangeオブジェクトの行番号を取得するには、どのようなコードを書けばいいのかを探していらしたのでしょう。
図形の左上セルの行番号を取得するサンプルマクロ
アクティブなワークシート上に図形が存在しているときに以下のSubプロシージャを実行すると、1つ目の図形の左上セルの行番号がメッセージボックスに表示されます。
MsgBox ActiveSheet.Shapes(1).TopLeftCell.Row
End Sub
図形の左上セルの列番号を取得するサンプルマクロ
ほとんど同じことを調べていらした、
「topleftcell.column 列 数値」
「topleftcell.column 列番号」
という検索キーワードでのアクセスもあります。
Columnというキーワードまで使っている方が、どこにつまずいていらしたのか不明ですが、以下のSubプロシージャが参考になるのではないでしょうか。
MsgBox ActiveSheet.Shapes(1).TopLeftCell.Column
End Sub
先にご紹介した行番号取得とほとんど同じで、違いは最後がRangeオブジェクトのColumnプロパティになっていることだけです。
オブジェクト式を分解してみましょう
Shape.TopLeftCellプロパティはRangeオブジェクトを返すのですから、
「vba topleftcell 行番号」
「excelvba .topleftcell.address 行番号取得」
といった検索をなさった方が調べていたのは、結局、セルの行番号を取得するコードです。
同様に、
「topleftcell.column 列 数値」
「topleftcell.column 列番号」
を検索なさった方が調べていたのは、セルの列番号を取得するコードです。
おそらくオブジェクト式が何を返すのかを、しっかりイメージすることができていない段階でらっしゃるのでしょうから、オブジェクト変数を使って以下のように分解してみることも必要でしょう。
Dim shp As Shape
Set shp = ActiveSheet.Shapes(1)
Dim rng As Range
Set rng = shp.TopLeftCell
End Sub
アクティブシートの1つ目の図形を表すShapeオブジェクトを変数にセットしている、
Dim shp As Shape Set shp = ActiveSheet.Shapes(1)
を読んで、Shapeオブジェクトをイメージしましょう。
そのShapeオブジェクトの左上のセルを表すRangeオブジェクトを変数にセットしている、
Dim rng As Range Set rng = shp.TopLeftCell
を読んで、Rangeオブジェクトをイメージしましょう。
最後の、
MsgBox rng.Row
の部分を、
MsgBox rng.Column
にすれば、もちろん列番号の取得になります。
最終更新日時:2021-12-16 04:40
- Newer:重版決定
- Older:ByRef・参照渡しとはどう使うのか
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » TopLeftCellの行番号・列番号