Word VBA 用于为 ContentControl 放置在重复内容控件中的 table 单元格提供背景颜色

Word VBA for giving Background Color of table cell where ContentControl placed in Repeating Content Control

我在 Word 中有一个 table 从重复部分内容控件构建的。 CC的重复部分的单元格中有文本内容控件。

我可以根据文字给字体颜色;但我无法更改单元格的阴影,除了最后一行。

在调试会话中,无论我看到正确的行号和列号,Shading.BackgroundPatternColor 都不会改变颜色。令人惊讶的是,它适用于 table.

的最后一行
Dim CC As ContentControl
Dim TableNum As Long, RowNum As Long, ColNum As Long

For Each CC In ActiveDocument.ContentControls
    If CC.Tag = "tagPriority" Then
        If CC.Range.Text = "Critical" Then
            CC.Range.Font.TextColor = wdColorAutomatic
            If CC.Range.Information(wdWithInTable) Then
                  TableNum = Me.Range(0, CC.Range.End).Tables.Count
                  RowNum = CC.Range.Information(wdStartOfRangeRowNumber)
                  ColNum = CC.Range.Information(wdStartOfRangeColumnNumber)
                  ActiveDocument.Tables(TableNum).Cell(RowNum, ColNum).Shading.BackgroundPatternColor = wdColorDarkRed
             End If
             ...

此外,我得到了 the code in Whosebug

的帮助

改变后

TableNum = Me.Range(0, CC.Range.End).Tables.Count

TableNum = ActiveDocument.Range(0, CC.Range.End).Tables.Count

它对我有用。如果您的代码位于 ThisDocument 模块的文档事件处理程序中,我将您的代码放在一个标准模块中,所以 YMMV。

当然还有另一种获取table的方法也有效

Dim tbl As Table
Set tbl = CC.Range.Tables(1)
tbl.Cell(RowNum, ColNum).Shading.BackgroundPatternColor = wdColorDarkRed

编辑: 我使用的代码:

Sub AddCellShading()
   Dim CC As ContentControl
   Dim tbl As Table, RowNum As Long, ColNum As Long

   For Each CC In ActiveDocument.ContentControls
      If CC.Tag = "tagPriority" Then
         If CC.Range.Text = "Critical" Then
            CC.Range.Font.TextColor = wdColorAutomatic
            If CC.Range.Information(wdWithInTable) Then
               Set tbl = CC.Range.Tables(1)
               RowNum = CC.Range.Information(wdStartOfRangeRowNumber)
               ColNum = CC.Range.Information(wdStartOfRangeColumnNumber)
               tbl.Cell(RowNum, ColNum).Shading.BackgroundPatternColor = wdColorDarkRed
            End If
         End If
      End If
   Next CC
End Sub

结果: