使用 VBA 在 MS Word 中设置条件格式

Conditional Formatting in MS Word using VBA

美好的一天,

我正在尝试使用 VBA 在 Microsoft Word 中使用有效的条件格式,这与 Excel 中已知的格式非常相似。

我目前的解决方案

我在第 4 列的字段中有一个 IF 语句,用于检查第 2 列中的值是否小于或大于第 3 列中的值,结合此 VBA 条件格式:

Sub UBC()
    color "No", wdRed
    color "Yes", wdBrightGreen
End Sub

Function color(text As String, backgroundColor As WdColorIndex)
    Dim r As Word.Range

    Set r = ActiveDocument.Content

    With r.Find
       Do While .Execute(findText:=text, MatchWholeWord:=True, Forward:=True) = True
          If r.Tables.Count > 0 Then
            If r.Cells(1).ColumnIndex = 4 Then
                r.Cells(1).Shading.BackgroundPatternColorIndex = backgroundColor
            End If
          End If
       Loop
    End With
End Function

我想要达到的结果

我想删除第 4 列并使用 VBA 检查 IF 语句现在处理的内容。除此之外,我还想使用 RGB 或 HEX 颜色代码而不是 wdColorIndex 库。

有人可以帮我修改当前代码吗?

试试这个

Sub Tester()
    Dim tbl As Table, rw As Row, v1, v2
    Set tbl = ActiveDocument.Tables(1)
    
    For Each rw In tbl.Rows
        v1 = CellValue(rw.Cells(2))
        v2 = CellValue(rw.Cells(3))
        If IsNumeric(v1) And IsNumeric(v2) Then
            v1 = CDbl(v1)
            v2 = CDbl(v2)
            Debug.Print v1, v2
            rw.Cells(2).Shading.BackgroundPatternColor = _
                     IIf(v1 <= v2, RGB(100, 250, 100), RGB(250, 100, 100))
        End If
    Next rw
End Sub

Function CellValue(c As Cell)
    Dim rv
    rv = c.Range.Text
    CellValue = Left(rv, Len(rv) - 2) 'remove "end of cell" marker
End Function