【VBA】シートの削除方法まとめ【強制的に削除する、条件を指定する】

Excel VBAで、シートを削除するには、「.Delete」を使います。メッセージを非表示にして強制的に削除したい場合は、「Application.DisplayAlerts = False」を使います。エラー回避のため、シートの存在を確認してから削除するといいです。シートの削除方法をマスターしていきましょう。
はじめに
この記事では、シートを削除する方法について、ご紹介します。
シートを削除したい場合は、「.Delete」を使います。
シートを削除するとメッセージが表示されますので、メッセージを非表示にして強制的に削除したい場合は、「Application.DisplayAlerts = False」とします。
存在しないシートを削除するとエラーとなりますので、削除する場合は、シートの存在を確認してから、削除するといいです。
シートの削除方法について、マスターしていきましょう。
では、シートを削除する方法について、解説していきます。
この記事を読むメリット
- マクロを止めることなく、シートを削除することができるようになります。
目次
シートを削除する
シートを削除するには、「.Delete」を使います。
「.Delete」でシートを削除
「.Delete」でシートを削除してみます。
Sub TEST1()
'シートを削除
ActiveSheet.Delete
End Sub
VBAコードを実行して、「Sheet1」を削除してみます。
「Sheet1」を削除してみる

メッセージが表示されちゃいます。
メッセージが表示される

削除をクリックすると、「Sheet1」を削除できます。
「Sheet1」を削除できた

「Sheet1」を削除できました。
毎回メッセージがでちゃうとクリックするのが面倒なので、強制的にシートを削除できるようにします。
メッセージを表示さず強制的に削除
メッセージを表示せず、強制的に「Sheet1」を削除してみます。
メッセージを表示せずシートを削除したい

メッセージを表示さず強制的に削除するには、「Application.DisplayAlerts = False」とします。
Sub TEST2() Application.DisplayAlerts = False 'メッセージを非表示 ActiveSheet.Delete 'シートを削除 Application.DisplayAlerts = True 'メッセージを表示 End Sub
シートを削除し終わったら、メッセージは表示したいので、「True」に設定し直しておきます。
では、実行してみます。
メッセージを表示しないでシートを削除できた

メッセージを表示しないで、「Sheet1」を削除できました。
1シートは残す必要がある
エクセルでは、1シートは残す必要があります。
1シートの場合で、シートを削除するとエラーとなってしまいます。
やってみます。
1シートの場合でシートを削除してみる

シートを削除するVBAコードです。
Sub TEST3() Application.DisplayAlerts = False 'メッセージを非表示 ActiveSheet.Delete 'シートを削除 Application.DisplayAlerts = True 'メッセージを表示 End Sub
実行してみます。
エラーになる

エラーとなりました。
シートを削除する際は、1シートは残すようにしましょう。
条件に一致するシートを削除
条件に一致するシートを削除するというのをやってみます。
シートが存在する場合に削除
存在しないシートを削除すると、エラーとなってしまいます。
ちょっとやってみます。
存在しないシート「Sheet4」を削除してみます。
存在しないシートを削除してみる

「Sheet4」を削除するVBAコードです。
Sub TEST4()
'存在しないシートを削除
Sheets("Sheet4").Delete
End Sub
実行してみます。

エラーとなりました。
シートを削除する際は、シートが存在するかを確認して、削除するといいです。
シートの存在を確認してシートを削除
シートの存在を確認して、シートを削除してみます。

シートの存在を確認して、シートを削除するVBAコードです。
Sub TEST5() Dim A For Each A In Sheets 'シートが存在する場合 If A.Name = "Sheet2" Then Application.DisplayAlerts = False A.Delete 'シートを削除 Application.DisplayAlerts = True End If Next End Sub
実行すると、エラーを回避して、シートを削除できます。

シートを削除できました。
部分一致したシートを削除
シート名を部分一致で検索して、シートを削除してみます。
部分一致でシートを削除したい

シート名を部分一致で検索して、シートを削除するVBAコードです。
Sub TEST6() Dim A For Each A In Sheets 'シート名に「2」を含む場合 If InStr(A.Name, "2") > 0 Then Application.DisplayAlerts = False A.Delete 'シートを削除 Application.DisplayAlerts = True End If Next End Sub
実行すると、「2」を含む「Sheet2」を削除することができます。
シートを削除できた

「Sheet2」のシートを削除できました。
おわりに
この記事では、シートを削除する方法について、ご紹介しました。
シートを削除したい場合は、「.Delete」を使います。
シートを削除するとメッセージが表示されますので、メッセージを非表示にして強制的に削除したい場合は、「Application.DisplayAlerts = False」とします。
存在しないシートを削除するとエラーとなりますので、削除する場合は、シートの存在を確認してから、削除するといいです。
シートの削除方法について、マスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。
関連する記事から探す