Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » TopLeftCellの行番号・列番号

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「vba topleftcell 行番号」
「excelvba .topleftcell.address 行番号取得」
といった検索キーワードでのアクセスが時折あります。

Excel VBAのShapeオブジェクトなどに、

TopLeftCellの行番号・列番号

左上のセルを表すRangeオブジェクトを返す、TopLeftCellプロパティがあります。

このTopLeftCellプロパティで取得したRangeオブジェクトの行番号を取得するには、どのようなコードを書けばいいのかを探していらしたのでしょう。

図形の左上セルの行番号を取得するサンプルマクロ

アクティブなワークシート上に図形が存在しているときに以下のSubプロシージャを実行すると、1つ目の図形の左上セルの行番号がメッセージボックスに表示されます。

Sub 図形の左上セルの行番号を取得する()
 MsgBox ActiveSheet.Shapes(1).TopLeftCell.Row
End Sub

図形の左上セルの列番号を取得するサンプルマクロ

ほとんど同じことを調べていらした、
「topleftcell.column 列 数値」
「topleftcell.column 列番号」
という検索キーワードでのアクセスもあります。

Columnというキーワードまで使っている方が、どこにつまずいていらしたのか不明ですが、以下のSubプロシージャが参考になるのではないでしょうか。

Sub 図形の左上セルの列番号を取得する()
 MsgBox ActiveSheet.Shapes(1).TopLeftCell.Column
End Sub

先にご紹介した行番号取得とほとんど同じで、違いは最後がRangeオブジェクトのColumnプロパティになっていることだけです。

オブジェクト式を分解してみましょう

Shape.TopLeftCellプロパティはRangeオブジェクトを返すのですから、
「vba topleftcell 行番号」
「excelvba .topleftcell.address 行番号取得」
といった検索をなさった方が調べていたのは、結局、セルの行番号を取得するコードです。

同様に、
「topleftcell.column 列 数値」
「topleftcell.column 列番号」
を検索なさった方が調べていたのは、セルの列番号を取得するコードです。

おそらくオブジェクト式が何を返すのかを、しっかりイメージすることができていない段階でらっしゃるのでしょうから、オブジェクト変数を使って以下のように分解してみることも必要でしょう。

Sub 図形の左上セルの行番号を取得する_オブジェクト変数利用()
 Dim shp As Shape
 Set shp = ActiveSheet.Shapes(1)

 Dim rng As Range
 Set rng = shp.TopLeftCell

 MsgBox rng.Row
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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » TopLeftCellの行番号・列番号

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

検索


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

.