VBAでワークシートを削除する基本
VBAでワークシートを削除する基本的な方法を解説します。
① シート名で指定して削除する方法
VBAで特定のシートを削除する最も基本的な方法は、シート名で指定することです。コードは Worksheets("シート名").Delete
の形で書きます。例えば、Worksheets("住所一覧").Delete
と記述すると、”住所一覧”という名前のシートが削除されます。この際、Application.DisplayAlerts = False
を設定することで、削除の確認メッセージを非表示にできますが、操作には注意が必要です。
② インデックスで指定して削除する方法
シート名ではなく、インデックス(何番目のシートか)でシートを削除することもできます。この場合のコードは Worksheets(インデックス番号).Delete
となります。たとえば、Worksheets(6).Delete
と記述すると、6番目のシートが削除されます。こちらも Application.DisplayAlerts = False
で警告メッセージを回避することができますが、削除するシートを間違えないようにすることが重要です。
③ アクティブシートを削除する方法
現在アクティブなシートを削除する場合は、ActiveSheet.Delete
を使用します。この方法は、ユーザーが明確にアクティブにしたシートを削除する場合に適しています。ただし、誤って重要なシートを削除しないよう、特に注意が必要です。
④ 複数のシートをまとめて削除する方法
複数のシートを一度に削除するには、シート名を配列として Sheets(Array("Sheet1", "Sheet2")).Delete
のように指定します。この方法を使用すると、”Sheet1″ と “Sheet2” が一度に削除されます。しかし、削除するシートを正確に指定することが重要です。
⑤ シートが一枚の場合の削除の扱い
Excelでは、少なくとも1枚のシートが必要です。そのため、ワークブックにシートが1枚しかない場合、そのシートを削除しようとするとエラーが発生します。この制限は、データの誤った削除を防ぐための重要な安全策です。

VBAを使ったワークシートの削除は便利ですが、誤って重要なデータを失わないよう注意が必要です。削除するシートを正確に確認し、操作を慎重に行いましょう!」
サンプルコード
特定のワークシートを名前で削除
Sub DeleteSheetByName()
Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
End Sub
このコードは、”Sheet1″ という名前のシートを削除します。Application.DisplayAlerts = False
は、削除時の確認ダイアログを表示させないために使用します。操作終了後に Application.DisplayAlerts = True
で元に戻します。
インデックス番号で特定のワークシートを削除
Sub DeleteSheetByIndex()
Application.DisplayAlerts = False
Sheets(2).Delete
Application.DisplayAlerts = True
End Sub
このコードは、2番目のシートを削除します。シートのインデックス番号を指定して削除する方法です。
アクティブなワークシートを削除
Sub DeleteActiveSheet()
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub
このコードは、現在アクティブなシートを削除します。アクティブなシートを削除する際にも、確認ダイアログを非表示にするために Application.DisplayAlerts = False
を使用します。