【ExcelVBA】ワークシートの削除
基本編
ワークシート削除
Sub Sample()
Application.DisplayAlerts = False
Thisworkbook.Sheets("Sheet1").Delete
Application.DisplayAlerts = True
End Sub
Application.DisplayAlerts = False を事前にしておかないと、下のメッセージがいちいち表示されます。

ワークシートの一括削除
パターン1:ワークシート名で指定
Sub Sample()
Dim TargetArray As Variant
TargetArray = Array("Sheet1", "Sheet2") '削除したいワークシート名明記
Application.DisplayAlerts = False
On Error Resume Next
ThisWorkbook.Worksheets(TargetArray).Delete 'シートを一括削除
On Error GoTo 0
Application.DisplayAlerts = True
End Sub
※存在しないワークシートを指定すると、削除は全部失敗します。パターン2:インデックス番号で指定
Sub Sample() Dim TargetArray As Variant TargetArray = Array(1, 2) '削除したいワークシートのインデックス番号明記 Application.DisplayAlerts = False On Error Resume Next ThisWorkbook.Worksheets(TargetArray).Delete 'シートをまとめて削除 On Error GoTo 0 Application.DisplayAlerts = True End Sub※存在しないインデックス番号を指定すると、削除は全部失敗します。
※上記はワークシートの左から1番目と2番目を削除する例です。
応用編
ワークシートを複数削除
Sub Sample()
Dim ArrTargetWS() As Variant
ArrTargetWS = Array("Sheet1", "Sheet3")
Application.DisplayAlerts = False
Dim WS As Variant
For Each WS In ArrTargetWS
On Error Resume Next
ThisWorkbook.Sheets(WS).Delete
On Error GoTo 0
Next
Application.DisplayAlerts = True
End Sub
※5行目のワークシート名を書き換えてください。
複数削除
一汎用的な書き方だと思います。




ディスカッション
コメント一覧
まだ、コメントがありません