この記事では、【Excel】VBAマクロでシートの削除(メッセージなし、確認、警告なしで削除、指定以外など)方法【Deleteメソッド、For Eachループ】について解説していきます。
マクロ初心者でもわかりやすいように、変数名は「aaaaa変数aaaaa」という形式で表現しています。
実際の使用時には、これらの変数名を適切な英語表記に変更してください。
ポイントとしては、DeleteメソッドとFor Eachループを使用することです。
それでは詳しく見ていきましょう!
VBAマクロで先頭シートの削除(メッセージなし、確認、警告なしで消す)
それではまず、先頭シートの削除について解説していきます。
この方法では、ワークブックの最初のシートを選択し、メッセージや確認ダイアログを表示せずに削除します。
Sub DeleteFirstSheet()
Application.DisplayAlerts = False
ThisWorkbook.Sheets(1).Delete
Application.DisplayAlerts = True
End Sub
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でDeleteFirstSheet関数を実行します。
このコードはApplicationオブジェクトのDisplayAlertsプロパティを使用して、削除の確認メッセージを抑制しています。
VBAマクロで途中の複数シートの削除(メッセージなし、確認、警告なしで消す、2から4シート目までの範囲)
続いては、途中の複数シートの削除について解説していきます。ここでは、2番目から4番目のシートを指定して削除します。
Sub DeleteMultipleSheets()
Application.DisplayAlerts = False
Dim aaaaaSheetaaaaa As Worksheet
For Each aaaaaSheetaaaaa In ThisWorkbook.Sheets(Array(2
, 3, 4))
aaaaaSheetaaaaa.Delete
Next aaaaaSheetaaaaa
Application.DisplayAlerts = True
End Sub
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でDeleteMultipleSheets関数を実行します。
このコードは、指定された範囲のシートをFor Eachループを使って削除します。DisplayAlertsプロパティで削除時の警告を抑制しています。
VBAマクロで指定以外の複数シートの削除(メッセージなし、確認、警告なしで消す、アクティブシート以外)
最後に、指定以外のシートを削除する方法について説明します。この例では、アクティブシート以外のすべてのシートを削除します。
Sub DeleteAllSheetsExceptActive()
Application.DisplayAlerts = False
Dim aaaaaSheetaaaaa As Worksheet
For Each aaaaaSheetaaaaa In ThisWorkbook.Sheets
If Not aaaaaSheetaaaaa Is ActiveSheet Then
aaaaaSheetaaaaa.Delete
End If
Next aaaaaSheetaaaaa
Application.DisplayAlerts = True
End Sub
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。コードのAlt+F8を押し、マクロ選択画面でDeleteAllSheetsExceptActive関数を実行します。このマクロは、アクティブシート以外のすべてのシートを削除することで、ワークブック内の不要なシートを効率よく整理することができます。
【For Eachループ、Ifステートメント】