Excel

【Excel】VBAマクロでシートの削除(メッセージなし、確認、警告なしで削除、指定以外など)方法【Deleteメソッド、For Eachループ】

当サイトでは記事内に広告を含みます。

この記事では、【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ステートメント】