I am writing an excel-vba to find and delete entire row if having blanks cell in a particular column. My macro is working fine if there is at least one blank cell but showing error 400 if there is no blank cell. My code is
Sub GPF_Sign()
Dim i As Integer, n as integer
Dim LROW As Long
LROW = Sheets("GPF").Range("B200").End(xlUp).Row
n = Range("D9:D" & LROW).SpecialCells(xlCellTypeBlanks).Cells.Count
If n > 0 Then
Range("D9:D" & LROW).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End Sub
Take your pick
Way 1: Using OERN (On Error Resume Next)
Sub WAY_ONE()
Dim ws As Worksheet, LROW As Long
Dim rng As Range
Set ws = Sheets("GPF")
With ws
LROW = .Range("B" & .Rows.Count).End(xlUp).Row
On Error Resume Next
Set rng = .Range("D9:D" & LROW).SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rng Is Nothing Then rng.EntireRow.Delete
End With
End Sub
Way 2: Using Autofilter
Sub WAY_TWO()
Dim ws As Worksheet, LROW As Long
Dim rng As Range
Set ws = Sheets("GPF")
With ws
.AutoFilterMode = False
LROW = .Range("B" & .Rows.Count).End(xlUp).Row
Set rng = .Range("D9:D" & LROW)
With rng 'Filter, offset(to exclude headers) and delete visible rows
.AutoFilter Field:=1, Criteria1:=""
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub