Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルを選択する

VBAでListObject・テーブルを選択する

対象:Excel2007, Excel2010, Excel2013

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

テーブルをアクティブにする・選択する、Excelマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

[スポンサードリンク]

テーブル全体を選択するサンプルマクロ

以下のようなマクロで、アクティブシート上の、一つ目のテーブルを選択することができます。

Sub テーブル全体を選択する()
 On Error Resume Next
 ActiveSheet.ListObjects(1).Range.Activate
End Sub

Worksheet.ListObjectsプロパティで、ListObjectsコレクションオブジェクトが取得できます。

テーブルを選択するExcelマクロ

そのデフォルトプロパティに「1」を指定することで一つ目のListObjectオブジェクトを取得するのが、

テーブルを選択するExcelマクロ

「ListObjects(1)」というオブジェクト式の意味です。

ListObjectオブジェクトをオブジェクトブラウザーで調べても、Activate的なメソッドは存在していませんが、

テーブルを選択するExcelマクロ

リスト内のセル範囲を選択することで、リストをアクティブにすることができるとの記述がヘルプにあります。

この情報を元に作ったのが「ListObjects(1).Range.Activate」というオブジェクト式です。

そもそもテーブルが存在していない・ListObjectオブジェクトが存在していないワークシート上で、
  ActiveSheet.ListObjects(1).Range.Activate
というコードを実行するとエラーとなってしまうので、事前に
  On Error Resume Next
を入れています。

ワークシートがアクティブになったときにテーブルを選択するイベントプロシージャ

上記の、
  ActiveSheet.ListObjects(1).Range.Activate
というコードをイベントプロシージャに入れておけば、シートがアクティブになったときに、テーブルを選択することもできます。

Private Sub Worksheet_Activate()
 On Error Resume Next
 ActiveSheet.ListObjects(1).Range.Activate
End Sub

テーブルの含まれているワークシートの、Worksheet_Activateイベントプロシージャを、上記のようにすれば、このワークシートがアクティブになったときに、必ず一つ目のテーブルが選択されます。

テーブル内の一つのセルを選択するサンプルマクロ

以下のようなマクロにすれば、アクティブシート上の、一つ目のテーブルの1行1列目のセルを選択することもできます。

Sub テーブル内の一つのセルを選択する()
 On Error Resume Next
 ActiveSheet.ListObjects(1).Range.Cells(1, 1).Activate
End Sub

先のテーブル全体を選択するマクロとの違いは、Rangeあとに「.Cells(1, 1)」が入っているところです。

ListObject.Rangeプロパティでリスト全体のセル範囲を取得できるので、そのセル範囲の中の1行1列目のセルを、Cellsプロパティを使って取得しているのが「ListObjects(1).Range.Cells(1, 1)」というオブジェクト式の意味です。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでListObject・テーブルを選択する

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

検索


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

.