VBA開発

ActiveSheet以外のWorkSheetを削除する【エクセルVBA】

ActiveSheet以外のWorkSheetをすべて削除したい

VBAで開いているWorkbook内のシート削除をしたいケースがあります。
シート削除する数が多いと、手動で一つずつ削除すると間違いのもとですし、無駄な作業です。
VBAで一括処理しましょう。

サンプルコード

For Eachでループさせて、ActiveSheetかどうかを判断し、
ActiveSheet以外はシート削除(WorkSheet.Delete)をします。

'■ActiveSheet以外のシートを削除する
Private Function call_sheetDelete_not_ActiveSheet()
    Dim ws As Worksheet
    
    '■シート削除の確認ポップアップを非表示
    Application.DisplayAlerts = False
    
    For Each ws In ActiveWorkbook.Worksheets
        If ws.name <> ActiveSheet.Name Then
            ws.Delete               '右記は表示されない「シートを削除すると元に戻せません。また、一部のデータが削除される可能性があります。それでも問題ない場合は[削除]をクリックしてください。」
        End If
    Next ws

    Application.DisplayAlerts = True
End Function

補足

今回はFor Each で開いているWorkSheetをループ処理しましたが、一例です。
Loopが出来れば構いませんので、以下の方法でも比較可能です。
■例 For でLoopさせる(ただし最大値から-1していく)
  For i = Worksheets.Count To 1 Step -1
Next iWorkSheetの枚数がずれてくるので、最大値から-1して処理をする概念を覚えればOKです。
実際に本処理で処理する必要性は薄いと考えます。

関連記事

ActiveSheetではなく、特定のシート以外を削除する場合は以下を参照してください。
※削除しない指定するシートは一つ複数どちらのコードも記載していますので、参考にしてください。

特定シート以外のWorkSheetを削除する【エクセルVBA】

コメント

タイトルとURLをコピーしました