macro to detect merged table cells?

T

Tony Logan

I'm wondering if there's a way to detect merged table cells.

As a test, I wrote the below code, wanting to examine each table in a
document, then examine each cell. If I found a merged cell, I wanted to
change the cell color to blue and display a message box stating "Merged
cell." If the cell was not a merged cell, I wanted to change the cell color
to red and display a message box stating "No merge detected."

However, the code errors at this line:
If oCell.Merge = True Then

The error indicates that Merge is not an optional argument.

I'm not sure if there's a way to detect merged cells in this manner. Here's
all the code:

Sub FindMergedCells()

Dim oTable As Table
Dim orow As Row
Dim i As Integer
Dim oCell As Cell

For Each oTable In ActiveDocument.Tables
For Each orow In oTable.Rows
For Each oCell In orow.Cells
If oCell.Merge = True Then ' ** code errors here **
oCell.Shading.BackgroundPatternColor = wdColorBlue
MsgBox "Merged cell."
Else
oCell.Shading.BackgroundPatternColor = wdColorRed
MsgBox "No merge detected."
Next oCell

Next orow
Next oTable

End Sub
 
J

Jezebel

The reason for the error is that Merge is a method, not a property: it's how
you merge cells, not how you report if they are merged.

The logic gets a bit hairy, but try iterating the cells and tracking the
..RowIndex .ColumnIndex properties. If the last .ColumnIndex value in the row
is less than the maximum, that row contains merged cells. Bear in mind that
the internal mechanism of Word tables has changed significantly at least
twice over the last few versions of Word (and still doesn't work properly).
Apart from merged cells, there's also the possibility of split cells.

Don't iterate the rows: if the table has vertically merged cells, this may
throw an error.

For each oCell in oTable.Cells
...

It's not obvious that the identity of the merged cells is significant
anyway. Try this: create a table with five columns and four rows. In row 1,
merge cells 1 and 2; in row 2 merge cells 2 and 3, row 3: 3 and 4, row 4: 4
and 5. Now re-align the cell boundaries. Do you have a 4 x 4 table, or a 5 x
4 table with a merged cell in each row?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top