実務で、たくさんのシートの含まれているExcelファイルを扱っていると、アクティブなシートだけを残して、他のシートをすべて削除したい、と感じるような場面があります。
アクティブシート以外のシートを削除するサンプルマクロ
そんなときのためのマクロを作成しましたので、ご紹介しておきます。
Dim i As Long
ActiveSheet.Move Before:=Sheets(1)
Application.DisplayAlerts = False
For i = Sheets.Count To 2 Step -1
Sheets(i).Delete
Next i
Application.DisplayAlerts = True
サンプルマクロの解説
シート削除のコードをシンプルにするために、まず
ActiveSheet.Move Before:=Sheets(1)
で、アクティブシートを先頭に移動してしまいます。
残したいシートを先頭に移動しておけば、シートの削除処理は、最後のシートから前に向かって、先頭シートだけを残すようにすればいいので、
For i = Sheets.Count To 2 Step -1
Sheets(i).Delete
Next i
というシンプルなループ処理で済みます。
なお、このマクロに限らず、削除系の処理は一般的に、前から後に向かうよりも、後から前に向かうようにするほうが、シンプルなコードで済みます。
シートの削除を行うときに確認メッセージが表示されないように
Application.DisplayAlerts = False
として、削除処理が終わったらもとに戻すために
Application.DisplayAlerts = True
を入れています。
- Newer:実務に即したマクロ例の初級講座
- Older:講師が実務経験者だからこその内容
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » アクティブシートだけ残して他のシートをすべて削除するExcelマクロ