Deleting all empty rows in a table using a macro

Article contributed by Dave Rado with acknowledgements to Ibby

See also What do I do with macros sent to me by other users to help me out?

Option Explicit

Public Sub DeleteEmptyRows()

Dim oTable As Table, oRow As Range, oCell As Cell, Counter As Long, _
NumRows As Long, TextInRow As Boolean

' Specify which table you want to work on.
Set oTable = Selection.Tables(1)
' Set a range variable to the first row's range
Set oRow = oTable.Rows(1).Range
NumRows = oTable.Rows.Count
Application.ScreenUpdating = False

For Counter = 1 To NumRows

    StatusBar = "Row " & Counter
    TextInRow = False

    For Each oCell In oRow.Rows(1).Cells
        If Len(oCell.Range.Text) > 2 Then
            'end of cell marker is actually 2 characters
            TextInRow = True
            Exit For
        End If
    Next oCell

    If TextInRow Then
        Set oRow = oRow.Next(wdRow)
    Else
        oRow.Rows(1).Delete
    End If

Next Counter

Application.ScreenUpdating = True

End Sub

Note that you could delete the empty rows from all tables in a document by replacing the line:

Set oTable = Selection.Tables(1)

With the line

For Each oTable In ActiveDocument.Tables

and adding the line:

Next oTable

just before:

Application.ScreenUpdating = True


Click to view Terms of Use page

Click to view Disclaimer page