🎃

【VBA】指定したシート以外を一気に削除する

2023/07/05に公開

串刺し集計するときは集計用シートと各自治体・団体のシートが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