VBA開発

特定シート以外のWorkSheetを削除する【エクセルVBA】

指定したシート以外の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

コメント

タイトルとURLをコピーしました