How do I delete Blank Rows apearing intermittenly amidst rows of data?

I have a worksheet filled with rows of data. My problem is that I wish to delete only those rows that are completely blank, say for esample I have a worksheet having data from A1:Z1 to A16636:Z16636, i.e. there are 16636 rows of data. It is possible that the first column in some of the rows may be blank, but I want only those rows to be deleted where all the cells in columns A to Z are completely blank. I found a code snippet (attached below) which deletes all rows not having data in column "A" but it does not solve m problem.

Please help!!
Sub DeleteBlankRows()
' Procedure : BlankRows
' DateTime  : 07/06/2008 21:38
' Author    : Vikram S. Mathur, FCA
' Purpose   :
    Dim lRange As Long
    Dim lLoop As Long
   On Error GoTo DeleteBlankRows_Error
    lRange = InputBox("How many rows?", "Row Count", ActiveCell.SpecialCells(xlLastCell).Row)
    If lRange <> 0 Then
        ActiveCell.Offset(0, 0).Select
        Application.ScreenUpdating = False
        For lLoop = 1 To lRange
            If Trim(ActiveCell.Value) = "" Then
                Else: ActiveCell.Offset(1, 0).Select
            End If
            Application.StatusBar = "Checking Row: " & lLoop & " of " & lRange
        Next lLoop
    End If
    Application.StatusBar = False
    Application.ScreenUpdating = True
   On Error GoTo 0
   Exit Sub
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure DeleteBlankRows of Module basDeleteBlankRows"
    Resume DeleteBlankRows_Exit
End Sub

Open in new window

Who is Participating?

Improve company productivity with a Business Account.Sign Up

miketobConnect With a Mentor Commented:
Ok, in that case you can use the following function to determine if a range is empty.

the range that you could pass as a parameter can be Range("A1:Z1"), for example, you could modify your code as this:

       For lLoop = 1 To lRange
            If RangeIsEmpty(Selection) Then
                ActiveCell.Offset(1, 0).Select
            End If
            Application.StatusBar = "Checking Row: " & lLoop & " of " & lRange
        Next lLoop

Hope it helps
Function RangeIsEmpty(pRange As Range) As Boolean
  Dim lCell As Range
  Dim lEmpty As Boolean
    lEmpty = True
    'scan all cells in the Range
    For Each lCell In pRange.Cells
       'Is not empty?
       If lCell.Value <> "" Then
          lEmpty = False
          Exit For
       End If
    RangeIsEmpty = lEmpty
End Function

Open in new window


Perhaps you could insert a  column at the begining of the sheet, (i.e a new A column) and fill that column with this formula:

Formula in cell A1:
= B1 & C1 & D1 & E1 & ... & Z1

so this cell will have the concatenation of all values in a row, and then run your same code snippet, so if this first cell is blank, it will be because all the row is empty.

Hope it helps.
vsmathur380052Author Commented:
Dear MikeTob,

I am looking for VBA Code to handle the solution to this problem, as many a times, this needs to be handled from within code, as there is very little human intervention involved in the aforesaid spreadsheet. It could have worked as a perfectly valid solution in the scenario if the entire spreadsheet  was being managed in the human intervention mode, unfortunately, it is not, so it has to be a coded intervetion that is the solution I am looking for.
vsmathur380052Author Commented:
Thanks a lot, Miketob, it really did help!!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.