Excel VBAを使用すると、シートの削除が非常に簡単になります。この記事では、基本的なシートの削除方法から、複数のシートを一度に削除するテクニック、さらには確認メッセージをスキップする方法まで、網羅的にご紹介します。Excel作業の効率を上げるために、ぜひこの記事を最後までお読みください。

シートを削除する基本的な方法
インデックスまたはシート名で削除
Excelには多くのシートが存在する場合があります。その中から特定のシートを削除するには、Sheets.DeleteまたはWorksheets.Deleteメソッドを使用します。以下のようなコードをVBAのエディタに入力することで、シートを削除できます。
Sheets(1).Delete ' 1番左のシートを削除
Sheets("Sheet1").Delete ' シート名「Sheet1」を削除
このコードでは、Sheets(1).Deleteは1番左のシートを削除し、Sheets("Sheet1").Deleteは「Sheet1」という名前のシートを削除します。
SheetsとWorksheetsの違いについて
SheetsとWorksheetsの違いは何かというと、それは対象とするシートの種類です。
Sheets: すべてのシート(ワークシート、グラフシート、マクロシートなど)を対象とします。Worksheets: ワークシートのみを対象とします。
確認メッセージを非表示にする方法

シートを削除する際には、通常、確認メッセージが表示されます。この確認メッセージを表示しないで削除するには、Application.DisplayAlerts = Falseを使用します。ただし、削除操作後にはApplication.DisplayAlerts = Trueで元に戻すことが推奨されます。
Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True
複数のシートを一度に削除する方法
配列を使用して複数のシートを削除
Excelで複数のシートを一度に削除する場合、配列を使用すると便利です。以下のコードは、1番目と2番目のシートを同時に削除する例です。
Sheets(Array(1, 2)).Delete ' 1番目と2番目のシートを削除
このコードを使用すると、指定した複数のシートが一度に削除されます。非常に効率的な方法です。
すべてのシートを削除する際の注意点
Excelでは、すべてのシートを削除することはできません。最低でも1つのシートは残す必要があります。すべてのシートを削除しようとすると、エラーが発生します。

指定したシート以外をすべて削除するコード
特定のシートだけを残して、他のすべてのシートを削除するには、以下のようなVBAコードを使用します。
Dim ws As Worksheet
Set ws = ActiveSheet
Dim s As Variant
For Each s In Sheets
If s.Name <> ws.Name Then
s.Delete
End If
Next
このコードでは、ActiveSheet(現在アクティブなシート)をwsという変数に格納しています。その後、For Eachループを使用して、すべてのシートを順に削除しています。
アクティブシートと選択シートを削除する方法
アクティブシートを削除する
アクティブシート(現在開いているシート)を削除するには、ActiveSheet.Deleteを使用します。
ActiveSheet.Delete
選択しているシートを削除する
選択しているシート(複数可)を削除するには、ActiveWindow.SelectedSheets.Deleteを使用します。
ActiveWindow.SelectedSheets.Delete
このコードを使用すると、現在選択しているすべてのシートが削除されます。
別ブックのシートを削除する方法
ブックを指定してシートを削除
特定のブックのシートを削除する場合は、Workbooksコレクションを使用してブックを指定します。
Workbooks("Book2.xlsx").Sheets("Sheet1").Delete
このコードでは、「Book2.xlsx」というブックの「Sheet1」というシートを削除しています。
シート削除に関するFAQ
Q:シートを削除する基本的なコードは何ですか?
A:シートを削除する基本的なコードはSheets("Sheet1").DeleteまたはWorksheets("Sheet1").Deleteです。これで名前が”Sheet1″のシートが削除されます。
Q:確認メッセージを表示させずにシートを削除するには?
A:Application.DisplayAlerts = Falseを使用することで、確認メッセージを表示させずにシートを削除できます。ただし、削除後にはApplication.DisplayAlerts = Trueで設定を元に戻すことが推奨されます。
Q:複数のシートを一度に削除する方法は?
A:Sheets(Array("Sheet1", "Sheet2")).Deleteのように、配列を使用して複数のシートを指定することで、一度に複数のシートを削除できます。
Q:すべてのシートを削除することはできますか?
A:Excelでは、すべてのシートを削除することはできません。最低でも1つのシートは残す必要があります。
Q:特定のシートだけを残して他を削除するには?
A:VBAのFor Eachループを使用して、特定のシート以外を削除するコードを書くことができます。具体的なコード例は上記の本文で解説しています。
Q:アクティブなシートを削除するコードは?
A:アクティブなシートを削除するには、ActiveSheet.Deleteというコードを使用します。
Q:選択しているシートを削除するには?
A:選択しているシートを削除するには、ActiveWindow.SelectedSheets.Deleteというコードを使用します。
Q:別のワークブックのシートを削除するには?
A:Workbooks("BookName.xlsx").Sheets("SheetName").Deleteという形で、特定のワークブックの特定のシートを削除することができます。
Q:シート削除時にエラーが出る場合の対処法は?
A:エラーが出る場合は、そのシートが存在しない、または他のプログラムで使用中である可能性があります。エラーハンドリングを用いて、エラーが出た場合の処理を記述するとよいでしょう。
Q:シートを削除する際に特定の条件を満たす場合のみ削除するには?
A:If文を使用して条件を指定し、その条件がTrueの場合のみDeleteメソッドを実行するようにコードを書くことができます。
関連動画
まとめ
この記事では、Excel VBAを使用してシートを削除する多様な方法について詳しく解説しました。基本的な削除方法から、複数のシートを一度に削除する方法、確認メッセージを非表示にする方法など、幅広くカバーしています。この知識を活かして、Excel作業をより効率的に行いましょう。
