空白行を削除する|Excel VBA |
次のマクロは、使用セル範囲から空白行を削除します。
使用セル範囲の各行について行内のセルが空白かどうかをチェックし、すべてのセルが空白セルだったら変数Targetに結合して、最後に一括して削除します。
セルに表示形式や書式が設定されていても、値や数式が入力されていなければ空白セルとみなします。
Sub Sample()
Dim r As Long, c As Long
Dim Target As Range
With ActiveSheet.UsedRange
For r = 1 To .Rows.Count
'行内に空白セルがあるかどうかをチェック
For c = 1 To .Columns.Count
If Not IsEmpty(.Cells(r, c).Value) Then Exit For '---(1)
Next c
'行内のすべてのセルが空白だったら、変数Targetに結合
If c = .Columns.Count + 1 Then
If Target Is Nothing Then
Set Target = .Rows(r).EntireRow
Else
Set Target = Union(Target, .Rows(r).EntireRow)
End If
End If
Next r
End With
'削除対象の行があれば削除する
If Not Target Is Nothing Then
Target.Delete
End If
End Sub
Sample1は、セルの表示が空白でも、数式が入力されている場合は空白セルとみなしません。
数式の結果が長さ0の文字列「""」のときにも削除するには、(1)のコードを次のように変更してください。
If Len(.Cells(r, c).Value) <> 0 Then Exit For