空白行を削除するマクロ:Excel エクセルの使い方-マクロ/VBA
「エクセル マクロ 空白行削除」
「Exce VBA 空白の行 削除方法」
といった検索が行われているのを見かけることがあります。
Excelで空白行を削除するVBA(Visual Basic for Applications)マクロを探している方の検索です。
空白行を削除するマクロといっても、細かくヒヤリングしてみると、いろいろな要望が出てくることが多いのですが、とりあえず、アクティブなワークシートで行全体が空白のときにその行を削除するマクロをご紹介します。
▼空白の行全体を削除するマクロ
Sub DeletBlakRows()
Dim lngLstRow As Long
Dim lngLop As Long
lngLstRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Application.ScreenUpdating = False
For lngLop = lngLstRow To 1 Step -1
If Application.WorksheetFunction.CountA(Rows(lngLop)) = 0 Then Rows(lngLop).Delete
Next lngLop
Application.ScreenUpdating = True
End Sub
まず、
lngLstRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
でアクティブセルの最終セルの行番号を取得します。
次の
Application.ScreenUpdating = False
で、処理速度を早くするために画面更新を停止しています。
ループ処理は、
For lngLop = lngLstRow To 1 Step -1
先に取得した最終行から1行目に向かって処理していきます。
実際に行削除を行う処理がループの中の
If Application.WorksheetFunction.CountA(Rows(lngLop)) = 0 Then Rows(lngLop).Delete
です。
IF文の
Application.WorksheetFunction.CountA(Rows(lngLop))
がExcelのVBAに慣れていない方の場合、見慣れない処理かもしれません。
これはVBAからワークシート関数を利用するときの記述方法です。
ワークシート関数のCOUNTA関数を使うことで、簡単に空白かどうかを調べることができます。
最後の
Application.ScreenUpdating = True
で、停止していた画面更新を元に戻しています。
▼サンプルファイル(003683.xls 30KByte)ダウンロード
1位:生年月日から年齢を計算−DATEDIF関数
2位:Excel ショートカットキー一覧
3位:ドロップダウンリストの作り方−直接入力
4位:切り捨てしたい・切り上げしたい−ROUNDDOWN関数・ROUNDUP関数
5位:原稿用紙テンプレートのダウンロード
6位:エラー表示しないように−ISERROR関数
7位:請求書の無料テンプレート
8位:入力規則のリスト用データを別シートにまとめる
9位:コメントの印刷
10位:無料の家計簿テンプレートをダウンロード

