「エクセル vba テーブルのアドレス」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
ListObject・テーブルの存在するセルのアドレスを取得する、VBA(Visual Basic for Applications)のコードを探していた方による検索です。
アクティブシートのテーブルのアドレスを取得するサンプルマクロ
以下のようなマクロで、アクティブなシート上の、一つ目のテーブルのアドレスを取得して、メッセージボックスに表示できます。
MsgBox ActiveSheet.ListObjects(1).Range.Address(False, False)
End Sub
オブジェクトブラウザー等で確認するとわかるとおり、ListObjectオブジェクトにはAddress的なプロパティはありませんが、
ListObjectオブジェクトの存在しているセル範囲を表すRangeオブジェクトを返すRangeプロパティが存在していますから、
そのRangeプロパティを使ってRangeオブジェクトを取得して、RangeオブジェクトのAddressプロパティでアドレスを取得しています。
Excelをデータベースとして使うときに便利なテーブル機能ですが、結局のところ一つ一つの実体はセルですから、VBAでテーブル・ListObjectを操作するときは、結局Rangeオブジェクトを操作することになるケースが少なくありません。このマクロはそんな代表例でもあります。
アクティブブックの全テーブルのアドレスを取得するサンプルマクロ
以下のようなマクロにすれば、アクティブなブック上の、すべてのテーブルの存在するシート名と、アドレスをイミディエイトウィンドウに出力できます。
Dim sh As Worksheet
Dim ls As ListObject
For Each sh In Worksheets
For Each ls In sh.ListObjects
Debug.Print _
sh.Name & vbTab & _
ls.Range.Address(False, False)
Next ls
Next sh
End Sub
すべてのワークシートに対してFor Each~Nextループを回して、
For Each sh In Worksheets
各シート上のすべてのListObjectオブジェクトに対してループを回して、
For Each ls In sh.ListObjects
シート名とテーブルのアドレスをイミディエイトウィンドウに出力しています。
Debug.Print _
sh.Name & vbTab & _
ls.Range.Address(False, False)
- Newer:テキストボックス内の文字列を左揃えにするPowerPointマクロ
- Older:表の複数行を選択するWordマクロ
Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルのアドレスを取得する