🎃
【VBA】指定したシート以外を一気に削除する
串刺し集計するときは集計用シートと各自治体・団体のシートが1つのブックにまとめられているかと思います。
再集計する時や、集計シートにマクロの開始ボタンを置いている時は集計シート以外をすべて消し去りたいですよね。
そんなときはこんな風に書きます。
Sub DeleteSheets(wb As Workbook, remainSheetName As String)
Dim ws As Worksheet
'すべてのシートを対象に指定したシート以外は削除する
For Each ws In wb.Worksheets
If ws.Name <> remainSheetName Then
Application.DisplayAlerts = False
'シートを削除
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
End Sub
For eachは頻出なので必ず覚えましょう。
集計シートは残したいと思うので、第二引数には集計シートの名前を指定します。
使い方
Sub test()
Dim ws As Worksheet
Debug.Print "削除前のシート"
For Each ws In Worksheets
Debug.Print ws.Name
Next ws
'集計シート以外削除
DeleteSheets ThisWorkbook, "集計"
Debug.Print "削除後のシート"
For Each ws In Worksheets
Debug.Print ws.Name
Next ws
End Sub
このワークブックの既存のシートをイミディエイトウィンドウに表示してから削除処理を行い、残ったシートを表示します。
イミディエイトウィンドウはこんな感じになります。
集計
Sheet1
Sheet2
Sheet3
集計
Discussion