Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルの有無を確認する

VBAでピボットテーブルの有無を確認する

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

VBAでピボットテーブルの有無を確認する

「excel vba ピボット 判断 有無」
「ピボットテーブルの有無チェック vba」
「vba ピボットテーブルが存在するか確認」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

VBA(Visual Basic for Applications)で、ピボットテーブルが存在しているかどうかを調べるには、どのようなコード(オブジェクト式)を書けばいいのか、探している方による検索です。

[スポンサードリンク]

アクティブなシートにピボットテーブルがあるかを確認するサンプルマクロ

以下のような条件分岐文で、アクティブなシートにピボットテーブルが存在するかどうかを判定できます。

Sub ピボットテーブルの有無確認_アクティブシート()

 If ActiveSheet.PivotTables.Count = 0 Then
  MsgBox "アクティブなシートにピボットテーブルはありません。"
 Else
  MsgBox "アクティブなシートにピボットテーブルがあります!"
 End If

End Sub

シート上のすべてのピボットテーブルを表す、PivotTablesという名前のコレクションオブジェクトが存在します。このPivotTablesコレクションに含まれる、PivotTableオブジェクトの数を返すCountプロパティを調べれば、

VBAでピボットテーブルの有無を確認する

ピボットテーブルが存在しているのかどうかがわかります。PivotTables.Countが「0」なら、ピボットテーブルは存在していないことになります。

このPivotTablesコレクションオブジェクトを取得する、PivotTablesメソッドはWorksheetオブジェクトのメンバーですから、

VBAでピボットテーブルの有無を確認する

Worksheetオブジェクトを取得するために、ここではActiveSheetプロパティを利用したオブジェクト式「ActiveSheet.PivotTables....」を利用しています。

アクティブなブックにピボットテーブルがあるかを確認するサンプルマクロ

アクティブなブックに、ピボットテーブルがあるかどうかを調べるなら以下のようなマクロです。

Sub ピボットテーブルの有無確認_アクティブブック()

 Dim sh As Worksheet
 Dim n As Long ' ピボットテーブルの数

 n = 0
 For Each sh In Worksheets
  n = n + sh.PivotTables.Count
 Next sh

 If n = 0 Then
  MsgBox "アクティブなブックにピボットテーブルはありません。"
 Else
  MsgBox "アクティブなブックに、" & n & "個のピボットテーブルがあります!"
 End If

End Sub

PivotTablesコレクションオブジェクトは、Worksheetオブジェクトの下位オブジェクトですから、アクティブなブック上の全ワークシートに対してFor Each~Nextループを回して、
 For Each sh In Worksheets

各ワークシート上のピボットテーブルの数を調べています。
  n = n + sh.PivotTables.Count

ピボットテーブルをVBAから処理するサンプルコードは、書籍などでも掲載されているものは少ないですから、オブジェクト式の文法の正しい理解と、オブジェクトモデルの基本を頭に叩き込むことと、オブジェクトブラウザーの利用は必須だろうと感じます。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルの有無を確認する

「ピボットテーブル」の記事一覧

検索


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

.