使用合并单元格调整表格标题颜色

时间:2018-01-12 22:25:30

标签: ms-word word-vba

我有大量报告,其中有多个表需要调整其标题颜色。我遇到了一个问题,表格虽然在标题中有垂直合并的单元格。这是代码:

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>

还有其他办法吗?可能直接编辑表格样式?

1 个答案:

答案 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