📘 Excel逆引き事典

【VBA】全てのシートを配列を使って高速に削除する方法

日々の業務で大量のシートを持つExcelファイルを扱っていると、手作業でのシートの削除は非常に時間がかかることがあります。この記事では、VBAを使用して全シートを高速に一括削除する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub DeleteAllSheets()
    Dim ws As Worksheet, sheetNames() As Variant
    ' シート名の配列を作成
    ReDim sheetNames(1 To ThisWorkbook.Sheets.Count)
    i = 0
    For Each ws In ThisWorkbook.Worksheets
        i = i + 1
        sheetNames(i) = ws.Name
    Next ws
    
    ' シート名の配列を逆順に処理することで、シート削除時のインデックスエラーを回避
    Application.ScreenUpdating = False
    For i = ThisWorkbook.Sheets.Count To 1 Step -1
        ThisWorkbook.Worksheets(sheetNames(i)).Delete
    Next i
    
    ' ディスプレイ更新と警告の再有効化
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。