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

全グラフシートを削除するExcelマクロ

対象: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 cht
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

すべてのグラフシートを表す、ChartsコレクションオブジェクトにもDeleteメソッドがあるのです。

全グラフシートを削除するExcelマクロ

グラフシートが存在しない場合にいきなりCharts.Deleteを実行すると、実行時エラーが発生しますので、
 If Charts.Count >= 1 Then
というIf文をかましています。

オブジェクト式解説編を受講いただいたみなさんへ

オブジェクト式解説編』を受講いただいたみなさんは、上記のFor Each~Nextループを使ったマクロを、For~Nextループを使って、.Itemプロパティを省略しないコードに書きなおしてみてください。

書き直し作業自体と、書き直したFor~Nextループを、カウンター変数の変化をローカルウィンドウで確認しながら一行一行実行することで、コレクションオブジェクトへの理解が深まるはずです。

書き直しをする際には「Charts.Item(i).」と入力してもメンバー表示が行われない理由、上記のFor Each~Nextループを使ったマクロでは「cht.」の後にちゃんと自動メンバー表示される理由を、確認しておきましょう。

また、Chartsコレクションオブジェクトを、ご自分の手を動かしてオブジェクトブラウザーで確認することも、必ずやってみてください。

For Each~NextループをFor~Nextループで書き直すことは、慣れないうちはちょっと時間がかかるかもしれませんが、Chartsコレクションオブジェクトをオブジェクトブラウザーで眺めることは、Excelが手元にあれば1分もあればできるはずです。

こういう小さなことの積み重ねが、先々、大きな大きな違いになってきますので。

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

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

検索


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

.