Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAで全グラフシートを削除する

VBAで全グラフシートを削除する

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

「vba グラフシートのみ全削除」
「excel vba 複数のグラフシートを削除する」
「エクセルマクロ グラフシートの削除」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

VBA(Visual Basic for Applications)でグラフシートを削除するには、どのようなコードを書けばいいのかを探している方による検索です。

「複数のグラフシート」と表現されているものが、どの複数なのかがわかりませんので、ここではアクティブなブックの、全グラフシートを削除するマクロを2つご紹介しておきます。

[スポンサードリンク]

全グラフシートを削除するサンプルマクロ

プログラミング経験のある方、ある程度Excelマクロを作り慣れた方が思いつきやすいのは以下のようなマクロでしょう。
Sub 全グラフシートを削除する()
 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ループへ入る前に、入れてください。

ループ処理を使わずに全グラフシートを削除するサンプルマクロ

実はループを回さなくても、すべてのグラフシートを削除できます。
Sub 全グラフシートを削除する_ループなし()
 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で全グラフシートを削除する

「グラフ・Chart」の記事一覧

検索


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