Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 不要なワークシートを削除するExcelマクロ

不要なワークシートを削除するExcelマクロ

対象:Excel97,Excel2000,Excel2002,Excel2003

Excelを使って実務で資料作成をしていると、ワークシートの整理整頓をする処理が必要になることが少なくありません。

このサイトでは、ワークシートの整理に役立つ以下のようなVBAマクロをご紹介してきました。

ワークシートの整理という観点では、データの存在しないワークシートをすべて削除したい、という要望もよくいただきます。
[スポンサードリンク]

データ・数式の入力されていないワークシートを一括削除するサンプルマクロ

ワークシートの枚数が少なければ、目視確認しながら削除するのも手間ではありませんが、大量のワークシートが存在すると面倒な作業となります。

VBA(Visual Basic for Applications)でマクロを作成すれば、こういった処理も簡単になります。

Sub 不要なワークシートを削除する()

 Dim i As Long

 If MsgBox("データ・数式の存在しないワークシートを全て削除していいですか?", vbYesNo) = vbNo Then Exit Sub

 Application.DisplayAlerts = False

 For i = Worksheets.Count To 1 Step -1
  If WorksheetFunction.CountA(Worksheets(i).UsedRange) = 0 Then
   If Worksheets.Count > 1 Then Worksheets(i).Delete
  End If
 Next i

 Application.DisplayAlerts = True

End Sub

サンプルマクロの解説

メインの処理はFor〜Nextのループ部分です。

ワークシートを順番に調べ、データが存在すれば削除しています。

データが存在するかどうかを、COUNTA関数(WorksheetFunction.CountA)の引数に、ワークシートで使われたセル範囲(Worksheets(i).UsedRange)を指定して、調べています。

WorksheetFunction.CountA(Worksheets(i).UsedRange)が「0」ならば、データが存在していないので、そのワークシートを削除するわけですが、万一ブック内の最後のワークシートを削除しようとした場合にはエラーが発生してしまうため、それを回避するためワークシートが1枚より多く存在しているか(Worksheets.Count > 1)を調べています。

なおこのマクロ、一点注意が必要です。

使われているかどうかを、COUNTA関数を使って調べているという点です。

データが存在しているか否かで、そのワークシートが使われているかどうかを判断しているのです。

つまりデータが存在せず、書式設定だけが行われているシートは使われていないと判断し、削除してしまうのです。

実務用のワークシートを作成する場合、書式設定を行っているならば、何らかのデータか数式が存在していることが多いとは思いますが、書式設定だけが行われているシートが絶対ないとは言い切れないでしょう。

このマクロはその点を理解した上でご利用ください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 不要なワークシートを削除するExcelマクロ

「Sheets・Worksheet」の記事一覧

検索


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