【Excel VBA】ワークブックからシートを削除する

当ページのリンクには広告が含まれている可能性があります。

こんにちは、ユーキです。

今回は、ワークブックからシートを削除する方法を紹介します。

目次

シートの削除方法

まずはシートを指定して削除する方法から紹介します。

現在のワークブックからシートを削除する

1番目のシートを削除したい場合、シートを指定して、Deleteメソッドを呼び出します。これで削除できます。

ActiveWorkbook.Sheets(1).Delete

ただ、これだと削除する際に、「消して大丈夫ですか?」の確認ダイアログが表示されてしまいます。

確認ダイアログを出したくない場合、Application.DisplayAlertsプロパティをオフ(False)にします。

Application.DisplayAlerts = False
ActiveWorkbook.Sheets(1).Delete
Application.DisplayAlerts = True

Application.DisplayAlertsプロパティをオフ(False)にしたままだと、以降の警告メッセージが表示されなくなってしまいます。処理が終わったら、必ずオン(True)になるようにしておきましょう。

こんなときはどうなる?

エラーが発生する状態を知っておきましょう。

削除対象のシートが存在しない場合

存在しないシートを削除しようとすると、エラーになります。

’10番目のシートは存在しない場合 → エラー発生
ActiveWorkbook.Sheets(10).Delete
’「試験」という名前のシートは存在しない場合 → エラー発生
ActiveWorkbook.Sheets("試験").Delete

上記を実行すると、どちらの場合でも、「インデックスが有効範囲にありません。」というエラーが発生します。

シートが存在しない可能性がある場合は、エラートラップをしておきましょう。エラー発生時の処理は以下の記事を参考にしてください。

シートが1つしかない場合

シートを削除すると、ワークブックにシートが1つもない状態になってしまう場合、エラーが発生します。

’最後の1つ。これを削除すると、シートがなくなってしまう → エラー発生
ActiveWorkbook.Sheets(1).Delete

削除したシートの復元はできない

削除したシートは復元できません。試験をする際には慎重に作業をしてください。

重要なシートを削除する場合、確認ダイアログを出すなどの工夫をするとよいでしょう。

まとめ

今回は、ワークブックからシートを削除する方法の紹介でした。

Point
  • ActiveWorkbook.Sheets(1).Deleteで削除可能
  • 存在しないシートを指定するとエラーが発生する

少しでもお役に立てば、幸いです。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅好き職業プログラマ。文系大学卒業後、ITソフトウエア開発会社に勤務してプログラミング言語を学ぶ。現在は転職し、プロジェクトマネージャ的ポジションで生産管理システムの開発にあたる。
得意言語は、VB、VB.NET、C#.NET、Java、SQLなど。

目次