Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » アクティブセルがテーブルかを判定する-Range.ListObjectプロパティ

アクティブセルがテーブルかを判定する-Range.ListObjectプロパティ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「vba 選択しているセルがテーブルかを取得 excel」
という検索キーワードに気づきました。

Excel VBA(Visual Basic for Applications)で、選択されているセルが、テーブル(ListObjectオブジェクト)に含まれているかどうかを調べる方法を探していた方による検索です。

[スポンサードリンク]

オブジェクト変数を使ってアクティブセルがテーブルに含まれるかを判定するサンプルマクロ

以下のようなコードでアクティブなセルが、ListObjectオブジェクトに含まれるかどうかを判定できます。

Sub アクティブセルがListObjectかを判定する_オブジェクト変数()
 Dim lst As ListObject

 Set lst = ActiveCell.ListObject
 If lst Is Nothing Then
  MsgBox "テーブル(ListObject)ではありません。"
 Else
  MsgBox "テーブル(ListObject)です!"
 End If
End Sub

Rangeオブジェクトには、ListObjectオブジェクトを返す、ListObjectプロパティが用意されています。

アクティブセルがListObject・テーブルかを判定する

Range.ListObjectプロパティの戻りを調べて、NothingであればListObjectオブジェクトに含まれていないRangeであると判定できます。

ListObject.Nameを使ってアクティブセルがテーブルに含まれるかを判定するサンプルマクロ

オブジェクト変数が苦手だという方の場合は、以下のようなプロシージャでしょうか。

Sub アクティブセルがListObjectかを判定する_ListObject_Name()
 On Error Resume Next
 If ActiveCell.ListObject.Name = "" Then
  MsgBox "テーブル(ListObject)ではありません。"
 Else
  MsgBox "テーブル(ListObject)です!"
 End If
 On Error GoTo 0
End Sub

アクティブなセルが、テーブルに含まれていれば「ActiveCell.ListObject.Name」というオブジェクト式で、テーブル名が返されるので、空白であればテーブルに含まれていないと判定できます。

ただし、アクティブセルがテーブルに含まれていないときには、
 If ActiveCell.ListObject.Name = "" Then
で実行時エラーが発生しますから、事前にOn Error Resume Next文を入れています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » アクティブセルがテーブルかを判定する-Range.ListObjectプロパティ

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

検索


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

.