「excelvba ピボットテーブル 削除」
「エクセル マクロ ピボット 削除」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
ピボットテーブルをすべて削除するサンプルマクロ
上記の検索キーワードだけでは、どんな仕様のマクロが必要とされているのかわかりませんが、ピボットテーブルを含むワークシートを削除するマクロをご紹介しておきます。
Dim msg As String
msg = "アクティブブックの、ピボットテーブルの存在するワークシートを全て削除しますか?"
If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub Application.DisplayAlerts = False
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.PivotTables.Count >= 1 Then
ws.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
上記のマクロを実行すると、
「アクティブブックの、ピボットテーブルの存在するワークシートを全て削除しますか?」
というメッセージボックスが表示され、[はい]ボタンをクリックすると、アクティブなワークブックで、ピボットテーブルが存在しているワークシートが全て削除されます。
サンプルマクロの解説
アクティブなワークブックの、すべてのワークシートに対してFor Each~Nextループを回して、
For Each ws In ActiveWorkbook.Worksheets
ワークシート上にピボットテーブルが一つでも存在していたときには、
If ws.PivotTables.Count >= 1 Then
そのワークシート自体を削除しています。
ws.Delete
Worksheetオブジェクトの、PivotTablesメソッドでPivotTablesコレクションオブジェクトを取得して、
PivotTablesコレクションオブジェクトのCountプロパティが1以上だったら、
ピボットテーブルが存在しているので、そのWorksheetオブジェクトを削除する、というロジックです。
削除を実行するときに、
「選択したシートに、データが存在する可能性があります。データを完全に削除するには、[削除]をクリックしてください。」
メッセージが表示されないよう、ループ処理に入る前に、ApplicationオブジェクトのDisplayAlertsプロパティをFalseに設定しています。
Application.DisplayAlerts = False
最終更新日時:2020-03-27 03:01
Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » ピボットテーブルの存在するシートをすべて削除するマクロ