Excel

【Excel】VBAマクロでシート削除(指定以外の複数、確認しない、警告やメッセージ等、Worksheets, Delete, Addの活用)方法

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

この記事ではVBAマクロを使用してExcelのシートを効率的に削除する方法について解説していきます。

ポイントとしては☆Deleteメソッド☆、☆Worksheetsオブジェクト☆、☆Addメソッド☆を使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

VBAマクロで指定以外のシート削除(複数で警告メッセージ無し、確認メッセージ無し)方法【条件、選択、アクティブ以外を消す】【Delete, Worksheets】

それではまず、VBAマクロで指定以外のシートを削除する方法について解説していきます。

アクティブシート以外を全て消したいケースは多いと思います^_^

なお、効率の観点より途中のシート削除時の警告・確認メッセージは無しにしています。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub SheetSakujoHokani()

    ' アプリケーションの警告をオフにする
    Application.DisplayAlerts = False

    Dim sheet As Worksheet
    For Each sheet In ThisWorkbook.Worksheets
        ' アクティブシート以外を削除する
        If sheet.Name <> ThisWorkbook.ActiveSheet.Name Then
            sheet.Delete
        End If
    Next sheet

    ' アプリケーションの警告を元に戻す
    Application.DisplayAlerts = True

End Sub

コードのAlt+F8を押し、マクロ選択画面でSheetSakujoHokani関数を実行します。

このコードはアクティブシート以外の全てのシートを削除します。Application.DisplayAlertsをFalseにすることで、削除の際の確認メッセージを非表示にしています。

VBAマクロで特定のシート以降を削除(複数、確認メッセージなし)方法【ダイヤログで特定シート指定】【InputBox, Worksheets】

続いては、VBAマクロで特定のシート以降を削除する方法について解説していきます。

特定シート名をダイヤログに入力すると、それ以降のシートが一括で全て消えるコードです!

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub SheetSakujoTokutei()

    Dim shimeisho As String
    ' ダイヤログボックスで削除開始のシート名を入力
    shimeisho = InputBox("削除を開始するシート名を入力してください", "シート名の入力")

    Application.DisplayAlerts = False

    Dim sheet As Worksheet
    Dim sakujoFlag As Boolean
    sakujoFlag = False

    For Each sheet In ThisWorkbook.Worksheets
        ' 指定されたシート名以降のシートを削除する
        If sakujoFlag Then
            sheet.Delete
        End If
        If sheet.Name = shimeisho Then
            sakujoFlag = True
        End If
    Next sheet

    Application.DisplayAlerts = True

End Sub

コードのAlt+F8を押し、マクロ選択画面でSheetSakujoTokutei関数を実行します。

InputBox関数を使用して、削除を開始するシート名をユーザーに入力させる方式を取っています。その後、指定したシート名以降のシートを順に削除していきます。

VBAマクロですべてのシートを削除し1つ新規シートを作成する方法【Worksheets, Add】

最後に、VBAマクロですべてのシートを削除し、新しく1つのシートを作成する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub ZenSheetSakujo()

    Application.DisplayAlerts = False

    Dim sheet As Worksheet
    For Each sheet In ThisWorkbook.Worksheets
        sheet.Delete
    Next sheet

    ' 新しいシートを追加
    ThisWorkbook.Worksheets.Add

    Application.DisplayAlerts = True

End Sub

コードのAlt+F8を押し、マクロ選択画面でZenSheetSakujo関数を実行します。

このコードは全てのシートを一度削除し、その後新しく1つのシートを追加します。簡単で直感的な処理となっております。

まとめ

このように、VBAマクロを使うとExcelのシート操作を効率的に行うことができます。

初心者の方でも、上記のコードを参考にして、自身のニーズに合った処理コードを作ってみてください!