今回は、シートの削除について解説します。
シート削除時に表示される警告メッセージを非表示にする方法や、複数のシートを削除する方法なども併せて解説しています。
ぜひ最後までお付き合いください。
- シートを削除する方法が分かります。
- 警告メッセージを非表示にする方法や、複数シートを削除する方法についても解説します。
- コピペで使える実践的なサンプルコードを掲載しています。
基本情報
Deleteメソッド
シートを削除するには、WorksheetオブジェクトのDeleteメソッドを使用します。
Worksheetオブジェクト.Delete
削除時のメッセージについて
Deleteメソッドによってシートを削除する際に、Excelから「シートを本当に削除するか」の確認メッセージが出力され、マクロが一時停止してしまいます。
ApplicationオブジェクトのDisplayAlertsプロパティをFalseにすることで、メッセージを非表示にすることが出来ます。
詳細は、サンプルコード – 名前を指定してシートを削除するを参照ください。

サンプルコード
名前を指定してシートを削除する
以下のサンプルコードでは、アクティブブックの先頭と末尾のシートを削除します。
Worksheetsに名前を指定し、狙ったシートのみを削除しています。
Public Sub deleteWorksheet()
' 警告メッセージを非表示にする
Application.DisplayAlerts = False
' アクティブ状態のブックの Sheet1を削除する
ActiveWorkbook.Worksheets("Sheet1").Delete
' 警告メッセージの非表示設定を解除する
Application.DisplayAlerts = True
End Sub
先頭や末尾のシートを削除する
以下のサンプルコードでは、アクティブブックの先頭と末尾のシートを削除します。
Worksheetsには、シート名だけではなくインデックス(シートの位置)の指定も可能です。
Public Sub deleteWorksheet()
' 警告メッセージを非表示にする
Application.DisplayAlerts = False
' 先頭のシートを削除する
ActiveWorkbook.Worksheets(1).Delete
' 末尾のシートを削除する
ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count).Delete
' 警告メッセージの非表示設定を解除する
Application.DisplayAlerts = True
End Sub
複数シートを削除する
以下のサンプルコードでは、アクティブブックのSheet1とSheet2のシートを削除します。
Arrayを使用することで、複数シートを指定することが可能です。
※Arrayにはシート名でもOKなのですが、シートのインデックスを指定することも可能です。
Public Sub deleteWorksheet()
' 警告メッセージを非表示にする
Application.DisplayAlerts = False
' アクティブ状態のブックの Sheet1 と Sheet2 を削除する
ActiveWorkbook.Worksheets(Array("Sheet1", "Sheet2")).Delete
' 警告メッセージの非表示設定を解除する
Application.DisplayAlerts = True
End Sub
指定したシート名以外のシートを削除する
以下のソースコードでは、アクティブブック内のSheet1以外のシートをすべて削除します。
「このシートだけ以外を全部削除したい!」という場合もあるかと思いますので、ご使用ください。
※ハイライト箇所を場合により変更ください!
Public Sub deleteWorksheet()
' Activeブック内のSheet1以外のシートを削除する
Call deleteWorksheetForExclusiveName(ActiveWorkbook, "Sheet1")
End Sub
Public Sub deleteWorksheetForExclusiveName(ByVal wbObj As Workbook, ByVal leaveSheetName As String)
Dim wsObj As Worksheet ' Worksheetオブジェクト
' 警告メッセージを非表示にする
Application.DisplayAlerts = False
For Each wsObj In wbObj.Worksheets
' シート名の判定
If wsObj.Name <> leaveSheetName Then
' 指定された名前以外のシートを削除する
wsObj.Delete
End If
Next wsObj
' 警告メッセージの非表示設定を解除する
Application.DisplayAlerts = True
End Sub
最後に
今回は、シートの削除について解説しました。
本記事では、マクロが一時停止しないよう、すべてのサンプルコードに警告メッセージを非表示にするコードを入れていますが、場合によって、当該処理を削除するなどしてご使用頂けると助かります。
本記事が、皆さんのお力になれば幸いです!
コメント