「vba グラフシートのみ全削除」
「excel vba 複数のグラフシートを削除する」
「エクセルマクロ グラフシートの削除」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
VBA(Visual Basic for Applications)でグラフシートを削除するには、どのようなコードを書けばいいのかを探している方による検索です。
「複数のグラフシート」と表現されているものが、どの複数なのかがわかりませんので、ここではアクティブなブックの、全グラフシートを削除するマクロを2つご紹介しておきます。
全グラフシートを削除するサンプルマクロ
プログラミング経験のある方、ある程度Excelマクロを作り慣れた方が思いつきやすいのは以下のようなマクロでしょう。Dim cht As Chart
For Each cht In Charts
cht.Delete
Next
End Sub
すべてのグラフシートを表すChartsコレクションオブジェクトに対してFor Each~Nextループを回して、
For Each cht In Charts
順番に削除していきます。
cht.Delete
上記のマクロを実行すると、
「選択したシートに、データが存在する可能性があります。データを完全に削除するには[削除]をクリックしてください。」
という確認メッセージが表示されます。
この確認メッセージを表示したくないのであれば、
Application.DisplayAlerts = False
を、For Each~Nextループへ入る前に、入れてください。
ループ処理を使わずに全グラフシートを削除するサンプルマクロ
実はループを回さなくても、すべてのグラフシートを削除できます。If Charts.Count >= 1 Then
Charts.Delete
End If
End Sub
すべてのグラフシートを表す(Chartオブジェクトのみを単独のオブジェクトとして含む)Sheetsコレクションにも、Deleteメソッドがあるためです。
グラフシートが存在しない場合にいきなりCharts.Deleteを実行すると、実行時エラーが発生しますので、
If Charts.Count >= 1 Then
というIf文をかましています。
最終更新日時:2020-06-11 16:11
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAで全グラフシートを削除する