【ExcelVBA】ワークシートの削除

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行目のワークシート名を書き換えてください。

複数削除 一汎用的な書き方だと思います。