我有大量报告,其中有多个表需要调整其标题颜色。我遇到了一个问题,表格虽然在标题中有垂直合并的单元格。这是代码:
Sub Recolor_Table()
Dim Doc_Table As Table
For Each Doc_Table In ActiveDocument.Tables
If Doc_Table.Style Like "*Non-Results Table*" Then
'Since this will match "*Results Table*" as well, check it first
Doc_Table.Rows(1).Shading.BackgroundPatternColor = 12566463 'Grey
ElseIf Doc_Table.Style Like "*Results Table*" Then
Doc_Table.Rows(1).Shading.BackgroundPatternColor = 8406272 'Blue
End If
Next Doc_Table
End Sub
此操作失败,并显示以下错误消息:
运行时错误' 5991':
无法访问此集合中的各个行,因为该表具有垂直合并的单元格
我尝试调整表格中每个单元格的循环,但发现单词中的表格没有.cells
属性,因此For each cell in table.cells
样式循环不起作用。< / p>
还有其他办法吗?可能直接编辑表格样式?
答案 0 :(得分:1)
Table对象没有Cells属性,但Table.Range对象有,所以:
For Each cel in Table.Range.Cells
应该有效:
Sub LoopCellsInTableWithMergedCells()
Dim tbl As word.Table
Dim cel As word.Cell
Set tbl = ActiveDocument.Tables(1)
For Each cel In tbl.Range.Cells
Debug.Print cel.rowIndex, cel.ColumnIndex
Next
End Sub