【エクセルマクロ】非表示シートを削除する:使用例2選

ExcelVBA-非表示シート削除-アイキャッチ ExcelVBA

エクセルマクロで、非表示シートのみ削除するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひ、お試しください!

非表示シートを削除

以下のマクロを実行すると、非表示シートのみブックから削除します。


Sub 非表示シートを削除する()

Dim WS As Worksheet
Dim TargetCheck As String

    'すべてのシートをループ
    For Each WS In Worksheets

        'シートが非表示だったら
        If WS.Visible = False Then
            
            'シート名を変数に代入
            TargetCheck = TargetCheck & WS.Name & vbCrLf

            '非表示シートを削除
            Application.DisplayAlerts = False
                WS.Delete
            Application.DisplayAlerts = True

        End If
    Next WS

    If TargetCheck = "" Then
        MsgBox "非表示シートはありません。"
    Else
        MsgBox "非表示シートを削除しました。" & vbCrLf & vbCrLf & TargetCheck
    End If

End Sub

マクロ実行前

ファイル内に3つのシートが存在している状態で、

1つのシートが非表示にします。


 

マクロ実行後

ファイル内にある全シートの表示・非表示の状態を判定します。

非表示シートがある場合、該当シートを削除してメッセージボックスにシート名を表示します。

非表示シートが複数あっても、処理可能です。


 

非表示シートを削除(条件追加)

以下のマクロを実行すると、非表示シートの中から特定シート以外を削除します。


Sub 非表示ワークシートを削除する()

Dim WS As Worksheet
Dim TargetCheck As String
Dim List As Variant
Dim i As Long
Dim Chk As Boolean

    '非表示でも削除しないシート
    List = Array("まとめ2", "まとめ4")

    '全シートをループ
    For Each WS In Worksheets

        Chk = False

        '非表示だったら
        If WS.Visible = False Then
                
            '配列「List」で指定したシートかどうかチェック
            For i = 0 To UBound(List)
                If WS.Name = List(i) Then
                    Chk = True
                    Exit For
                End If
            Next i

            '非表示シート名を変数に代入
            If Chk = False Then
                TargetCheck = TargetCheck & WS.Name & vbCrLf

                '非表示シートを削除
                Application.DisplayAlerts = False
                    WS.Delete
                Application.DisplayAlerts = True
            End If

        End If
    Next WS

    If TargetCheck = "" Then
        MsgBox "非表示シートはありません。"
    Else
        MsgBox "非表示シートを削除しました。" & vbCrLf & vbCrLf & TargetCheck
    End If

End Sub

マクロ実行前

ファイル内に6つのシートが存在している状態で、

3つのシートを非表示にします。


 

マクロ実行後

[List = Array(“まとめ2”, “まとめ4”)] で指定したシートは、非表示であっても削除しません。

削除したシート名をメッセージボックスに表示します。


 
 
この記事がお役に立ちますと幸いです。
 

・【エクセルマクロ】シートの追加・削除を自動化まとめ
 

【エクセルマクロ】シートの追加・削除を自動化:超便利12選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!