こんにちは、ユーキです。
今回は、ワークブックからシートを削除する方法を紹介します。
シートの削除方法
まずはシートを指定して削除する方法から紹介します。
現在のワークブックからシートを削除する
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
削除したシートの復元はできない
削除したシートは復元できません。試験をする際には慎重に作業をしてください。
重要なシートを削除する場合、確認ダイアログを出すなどの工夫をするとよいでしょう。
まとめ
今回は、ワークブックからシートを削除する方法の紹介でした。
- ActiveWorkbook.Sheets(1).Deleteで削除可能
- 存在しないシートを指定するとエラーが発生する
少しでもお役に立てば、幸いです。