指定したシート以外のWorkSheetをすべて削除したい
VBAで開いているWorkbookのシート削除を複数行う場合があります。
一つずつ手動で削除すると間違いのもとなので、VBAで一括処理しましょう。
指定シートが一つの場合
'■指定したシート以外のシートを削除する(削除しないシートは一つ)
Private Function call_sheetDelete()
Dim ws As Worksheet
'■シート削除の確認ポップアップを非表示
Application.DisplayAlerts = False
For Each ws In ActiveWorkbook.Worksheets
If ws.name <> "一覧表" Then
ws.Delete '右記は表示されない「シートを削除すると元に戻せません。また、一部のデータが削除される可能性があります。それでも問題ない場合は[削除]をクリックしてください。」
End If
Next ws
Application.DisplayAlerts = True
End Function
指定シートが複数の場合
'■指定したシート以外のシートを削除する(削除しないシートは複数)
Private Function call_sheetDelete2()
Dim ws As Worksheet
'■シート削除の確認ポップアップを非表示
Application.DisplayAlerts = False
For Each ws In ActiveWorkbook.Worksheets
Select Case ws.name
'■シート「一覧表」、シート「設定シート」は何もしない
Case "一覧表", "設定シート"
'■それ以外は削除する
Case Else
ws.Delete '右記は表示されない「シートを削除すると元に戻せません。また、一部のデータが削除される可能性があります。それでも問題ない場合は[削除]をクリックしてください。」
End Select
Next ws
Application.DisplayAlerts = True
End Function
関連記事
- 特定シートより右側のワークシートを削除する【ExcelVBA】
- 「シートがあれば削除/なければシート作成する」処理をパーツ化する【ExcelVBA】
- ActiveSheet以外のWorkSheetを削除する【エクセルVBA】



コメント
マクロ初心者です、不要なシートをいちいち消していましたが、この
マクロのおかげで素早く消すことができ作業が一段と効率UPしました
ありがとうございました。