マクロ基礎講座VBA シートを削除する方法

VBA シートを削除する方法
VBA シートを削除する方法

VBA でシートを削除する

いらないシートを削除する

作業用のシートを作ったりすることがあります。
作業が終わってシートを削除したい時にはどのようなコードを書けばいいのでしょうか。
ワークシートを削除するには、ワークシートの worksheet オブジェクトの delete メソッドを使って以下のように書くことができます。

シートを削除

1.先頭( 一つ目)のシートを削除するには、
Sheets(1).Delete または Worksheets(1).Deleteのように書くことができます。


VBA シートを削除する方法1

2. 名前で指定して削除する場合はシート名を””で囲ってやります。
Sheets("Sheet1").Delete
Worksheets("Sheet1").Delete


VBA シートを削除する方法2

3. この1行だけですと、実行したときに、確認メッセージが表示されます。


VBA シートを削除する方法3
Sub ワークシートを削除する()
    Worksheets(1).Delete
End Sub

4. この確認メッセージを表示させないで削除を実行するためには、
Applicationオブジェクト DisplayAlertプロパティを使用します。
シートを削除後、表示されるようにするには「True」を使用します。


Sub 先頭のワークシートを削除する()
    Application.DisplayAlerts = False
    Worksheets(1).Delete
    Application.DisplayAlerts = True
End Sub

ワークシートを名前で指定して削除する

5.ワークシートを名前で指定して削除する場合には、次のように シート名を””で囲ってください。

Sub ワークシートを名前で指定し削除する()
    Worksheets("1回").Delete
End Sub

VBA シートを削除する方法5

6.名前で指定して削除する場合に、もしその名前のシートが存在しないとエラーになってしまいます。そこでエラー回避のコードを入れておきましょう。

Sub シートを名前で指定し削除エラー回避()
    On Error GoTo errHandler
    Application.DisplayAlerts = False
    Worksheets("1回").Delete
    Application.DisplayAlerts = True
    Exit Sub
errHandler:
    MsgBox "存在しないシートです"
End Sub

下記の例では5回という名前のシートを削除しようとしました。 VBA シートを削除する方法6

一番最後のシートを削除する

7. 末尾のワークシートを削除する場合は
Worksheets(Worksheets.Count).Delete  と記述します。
ただしこのコードをシートが1枚しかない時に実行するとエラーになりますから気をつけてください。


VBA シートを削除する方法7
Sub 最後のシートを削除する()
    MsgBox Worksheets.Count & "番目のシートを削除しますか?"
    Worksheets(Worksheets.Count).Delete
End Sub