空白行を削除するマクロ:Excel エクセルの使い方-マクロ/VBA

対象:Excel2002, Excel2003, Excel2007, Excel2010

「エクセル マクロ 空白行削除」
「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)ダウンロード


関連記事
トラックバックURL−トラックバックは、内容確認後に公開しております。

キーワード
エクセル, Execel, VBA, マクロ, 空白行削除, Visual Basic for Applications




Related Posts with Thumbnails