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が出来れば構いませんので、以下の方法でも比較可能です。
Loopが出来れば構いませんので、以下の方法でも比較可能です。
■例 For でLoopさせる(ただし最大値から-1していく)
For i = Worksheets.Count To 1 Step -1
Next iWorkSheetの枚数がずれてくるので、最大値から-1して処理をする概念を覚えればOKです。
実際に本処理で処理する必要性は薄いと考えます。
For i = Worksheets.Count To 1 Step -1
Next iWorkSheetの枚数がずれてくるので、最大値から-1して処理をする概念を覚えればOKです。
実際に本処理で処理する必要性は薄いと考えます。
関連記事
ActiveSheetではなく、特定のシート以外を削除する場合は以下を参照してください。
※削除しない指定するシートは一つ、複数どちらのコードも記載していますので、参考にしてください。
コメント