Sub Delete_blanks()
Dim lstrow As Long
Dim ctr As Long
Dim lstcol As Long
lstrow = GetLast(1, Sheets("MySheet").Cells)
lstcol = GetLast(2, Sheets("MySheet").Cells)
ctr = 1
Do While lstrow > ctr
If WorksheetFunction.Sum(Range(Cells(ctr, 1), Cells(ctr, lstrow))) = 0 Then
Sheets("MySheet").Rows(ctr).Delete
lstrow = lstrow - 1
Else
ctr = ctr + 1
End If
Loop
End Sub
Option Explicit
Function GetLast(choice As Long, rng As Range)
'Ron de Bruin, 5 May 2008
' 1 = GetLast row
' 2 = GetLast column
' 3 = GetLast cell
Dim lrw As Long
Dim Lcol As Long
Select Case choice
Case 1:
On Error Resume Next
GetLast = rng.Find(What:="*", _
After:=rng.Cells(1), _
lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
Case 2:
On Error Resume Next
GetLast = rng.Find(What:="*", _
After:=rng.Cells(1), _
lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
Case 3:
On Error Resume Next
lrw = rng.Find(What:="*", _
After:=rng.Cells(1), _
lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
On Error Resume Next
Lcol = rng.Find(What:="*", _
After:=rng.Cells(1), _
lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
On Error Resume Next
GetLast = rng.Parent.Cells(lrw, Lcol).Address(False, False)
If Err.Number > 0 Then
GetLast = rng.Cells(1).Address(False, False)
Err.Clear
End If
On Error GoTo 0
If GetLast = 0 Then GetLast = 1
End Select
End Function