Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルのアドレスを取得する

VBAでListObject・テーブルのアドレスを取得する

対象:Excel2007, Excel2010, Excel2013

「エクセル vba テーブルのアドレス」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

ListObject・テーブルの存在するセルのアドレスを取得する、VBA(Visual Basic for Applications)のコードを探していた方による検索です。

[スポンサードリンク]

アクティブシートのテーブルのアドレスを取得するサンプルマクロ

以下のようなマクロで、アクティブなシート上の、一つ目のテーブルのアドレスを取得して、メッセージボックスに表示できます。

Sub アクティブシートの1つ目のテーブルのアドレスを取得する()
 MsgBox ActiveSheet.ListObjects(1).Range.Address(False, False)
End Sub

オブジェクトブラウザー等で確認するとわかるとおり、ListObjectオブジェクトにはAddress的なプロパティはありませんが、

ListObject・テーブルのアドレスを取得するExcelマクロ

ListObjectオブジェクトの存在しているセル範囲を表すRangeオブジェクトを返すRangeプロパティが存在していますから、

ListObject・テーブルのアドレスを取得するExcelマクロ

そのRangeプロパティを使ってRangeオブジェクトを取得して、RangeオブジェクトのAddressプロパティでアドレスを取得しています。

Excelをデータベースとして使うときに便利なテーブル機能ですが、結局のところ一つ一つの実体はセルですから、VBAでテーブル・ListObjectを操作するときは、結局Rangeオブジェクトを操作することになるケースが少なくありません。このマクロはそんな代表例でもあります。

アクティブブックの全テーブルのアドレスを取得するサンプルマクロ

以下のようなマクロにすれば、アクティブなブック上の、すべてのテーブルの存在するシート名と、アドレスをイミディエイトウィンドウに出力できます。

Sub 全テーブルのアドレスを取得する()
 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)

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルのアドレスを取得する

「ListObjectオブジェクト」の記事一覧

検索


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

.