【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.
シート名や列番号が正しいか確認してください。