サイトについて      連絡先   検索

VBA シートを削除する

はじめに

Excel VBA マクロのシートを削除する方法を紹介します。

Sheets.Delete メソッドまたは Worksheets.Delete メソッドでシートを削除できます。

複数や選択中のシートをまとめてや、ワークブックなどを指定できます。

  • 目次
    • シートを削除する
    • 複数のシートを削除する

シートを削除する

sheet1

Sheets の引数にインデックスかシート名を指定すると、そのシートを削除できます。

1 番目のシートを削除するにはSheets(1).DeleteまたはWorksheets(1).Deleteを入力します。1 番左のシートが 1 です。


Sheets(1).Delete        ' 1 番目のシートを削除
Sheets("Sheet1").Delete ' シート「Sheet1」を削除

Worksheets(1).Delete        ' 1 番目のシートを削除
Worksheets("Sheet1").Delete ' シート「Sheet1」を削除
5

シートを削除するときメッセージが表示されます。

4

これを表示させないためにはApplication.DisplayAlerts = Falseを入力します。削除処理が終わったら True に戻します。


Application.DisplayAlerts = False ' メッセージを非表示
Sheets(1).Delete
Application.DisplayAlerts = True  ' メッセージを表示

Sheets と Worksheets の違いはワークシート以外を取得するかどうかです。

別のワークブックを削除

Workbooks の引数にインデックスかブック名を指定すると、そのブックのシートを削除できます。

ブック名「Book2.xlsx」のブックを削除するにはWorkbooks("Book2.xlsx").SheetsまたはWorkbooks("Book2.xlsx").Worksheetsのように入力します。


' ブック「Book2.xlsx」のシート「Sheet1」を削除
Call Workbooks("Book2.xlsx").Sheets("Sheet1").Delete

' 2 番目のブックの 1 番目のシートを削除
Call Workbooks(2).Sheets(1).Delete

複数のシートを削除する

1 番目と 2 番目のシートを削除するにはSheets(Array(1, 2)).DeleteまたはSheets(Array("Sheet1", "Sheet2")).Deleteのように入力します。


Sheets(Array(1, 2)).Delete               ' 1 番目と 2 番目のシートを削除
Sheets(Array("Sheet1", "Sheet2")).Delete ' シート「Sheet1」と「Sheet2」のを削除

Worksheets(Array(1, 2)).Delete               ' 1 番目と 2 番目のシートを削除
Worksheets(Array("Sheet1", "Sheet2")).Delete ' シート「Sheet1」と「Sheet2」を削除
6

引数に配列でインデックスやシート名を指定します。

選択しているシートを削除

選択しているシートを削除するにはActiveWindow.SelectedSheets.Deleteを入力します。複数のシートが選択されているときは、そのすべてのシートを削除します。


ActiveWindow.SelectedSheets.Delete           ' 選択しているすべてのシートを削除
ActiveWindow.SelectedSheets(1).Delete        ' 選択している 1 番目のシートを削除
ActiveWindow.SelectedSheets("Sheet2").Delete ' 選択しているシート「Sheet2」を削除

ActiveWindow は VBA を実行しているシートではなく、アクティブなワークブックのシートを取得します。

すべてのシートを削除

すべてのシートを削除すると「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。

このため、必ず 1 つはシートを残す必要があります。

  • 目次
    • シートを削除する
    • 複数のシートを削除する