エクセルマクロで、非表示シートのみ削除する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自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!
リンク