Excelを使って実務で資料作成をしていると、ワークシートの整理整頓をする処理が必要になることが少なくありません。
このサイトでは、ワークシートの整理に役立つ以下のようなVBAマクロをご紹介してきました。
データ・数式の入力されていないワークシートを一括削除するサンプルマクロ
ワークシートの枚数が少なければ、目視確認しながら削除するのも手間ではありませんが、大量のワークシートが存在すると面倒な作業となります。
VBA(Visual Basic for Applications)でマクロを作成すれば、こういった処理も簡単になります。
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関数を使って調べているという点です。
データが存在しているか否かで、そのワークシートが使われているかどうかを判断しているのです。
つまりデータが存在せず、書式設定だけが行われているシートは使われていないと判断し、削除してしまうのです。
実務用のワークシートを作成する場合、書式設定を行っているならば、何らかのデータか数式が存在していることが多いとは思いますが、書式設定だけが行われているシートが絶対ないとは言い切れないでしょう。
このマクロはその点を理解した上でご利用ください。
- Newer:編集不可にするには?
- Older:ショートカットキーを割り当てる
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » 不要なワークシートを削除するExcelマクロ