Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » アクティブシートだけ残して他のシートをすべて削除するExcelマクロ

アクティブシートだけ残して他のシートをすべて削除するExcelマクロ

対象:Excel2003, Excel2007, Excel2010

実務で、たくさんのシートの含まれているExcelファイルを扱っていると、アクティブなシートだけを残して、他のシートをすべて削除したい、と感じるような場面があります。

[スポンサードリンク]

アクティブシート以外のシートを削除するサンプルマクロ

そんなときのためのマクロを作成しましたので、ご紹介しておきます。

Sub アクティブなシートだけ残して他のシートをすべて削除する()

 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

End Sub

サンプルマクロの解説

シート削除のコードをシンプルにするために、まず
 ActiveSheet.Move Before:=Sheets(1)
で、アクティブシートを先頭に移動してしまいます。

残したいシートを先頭に移動しておけば、シートの削除処理は、最後のシートから前に向かって、先頭シートだけを残すようにすればいいので、
 For i = Sheets.Count To 2 Step -1
  Sheets(i).Delete
 Next i
というシンプルなループ処理で済みます。

なお、このマクロに限らず、削除系の処理は一般的に、前から後に向かうよりも、後から前に向かうようにするほうが、シンプルなコードで済みます。

シートの削除を行うときに確認メッセージが表示されないように
 Application.DisplayAlerts = False
として、削除処理が終わったらもとに戻すために
 Application.DisplayAlerts = True
を入れています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » アクティブシートだけ残して他のシートをすべて削除するExcelマクロ

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.