Это происходит из-за .Value = ""
, и значение ячейки является ошибкой (возвращается несоответствие типов).Это хорошая работа:
Sub RemoveEmptyRows()
Dim i As Long, row As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
For row = 10 To 1 Step -1
If IsError(ws.Cells(row, 4)) Then
ws.Rows(row).Delete
ElseIf ws.Cells(row, 4).Value = "" Then
ws.Rows(row).Delete
End If
Next row
Next ws
End Sub