View Single Post
 
Old 01-03-2022, 03:17 AM
Catarina Catarina is offline Windows 10 Office 2016
Novice
 
Join Date: Jan 2022
Posts: 2
Catarina is on a distinguished road
Default Delete an MS Word table row based on next row text using VBA

Thank you in advance for your help on this.

I need to delete an MSWord table row based on the next row text.

My word table has headers which may or may not have sub-rows with details. I need to delete the header rows when there are no details below.

I can have, for example, this table, which is fine, no need to delete anything:

City
Lisbon
Porto
Madrid
London
Country
Portugal
Spain


But, if I have only this, then I need to delete the City header row (this is just an example, I have several header rows that need deleting when there are no contents below)

City
Country
Portugal
Spain

I tried adapting an earlier macro I had for deleting blank lines, but it is not working.

Code:
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.
For Each oTable In ActiveDocument.Tables

' Set a range variable to the first row's range
Set oRow = oTable.Rows(1).Range
Set oNextRow = oTable.Rows(1).Range
NumRows = oTable.Rows.Count
Application.ScreenUpdating = False

For Counter = 1 To NumRows

    StatusBar = "Row " & Counter
    DeleteRow = False

    For Each oCell In oRow.Rows(1).Cells
                       
        If oCell.Range.Text = "City" & Chr(13) & Chr(7) And oRow.Rows(1).Next.Cells(1).Range.Text = "Country" & Chr(13) & Chr(7) Then
            DeleteRow = True
            Exit For
        End If
    
    Next oCell

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

Next Counter

Next oTable
Application.ScreenUpdating = True
All help will be much appreciated
Reply With Quote