'指定シート以外を削除する
Sub DeleteSheetsExcept()
Const WS_DEF As String = "DEF"
Const WS_MAIN As String = "main"
Dim ws As Worksheet
Dim sheetName As String
Dim delSheets As Collection
Dim i As Long
' 削除候補を収集
Set delSheets = New Collection
For Each ws In ThisWorkbook.Sheets
sheetName = ws.Name
If sheetName <> WS_MAIN And sheetName <> WS_DEF Then
delSheets.Add ws
End If
Next ws
' 削除対象なし
If delSheets.Count = 0 Then
MsgBox "削除対象のシートはありません。", vbInformation
Exit Sub
End If
' 確認メッセージ
If MsgBox("「main」「DEF」以外の " & delSheets.Count & " シートを削除しますか?", vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
' 複数シート削除(警告無効)
Application.DisplayAlerts = False
For i = delSheets.Count To 1 Step -1
delSheets(i).Delete
Next i
Application.DisplayAlerts = True
MsgBox "「main」「DEF」以外のシートを削除しました。", vbInformation
End Sub
コメント