首页 > 解决方案 > 如何根据单元格内容使用 RGB 颜色对 Word 单元格应用条件格式

问题描述

我有大约 100 个大型 Word 文档,其中大约有 100 个。每张桌子50张。我正在尝试找到一种快速格式化它们的方法(使用 VBA),这样我就不必手动为每个单元格着色。

我需要根据单元格的内容使用特定的 RGB 颜色为单元格着色。例如:“非常好”或“次要”的单元格,需要填写RGB 112,173,71。“良好”或“中等”的单元格需要 RGB 169,208,142。

表格示例

我有大约 10 个左右不同的单词组合需要着色。

我查看了一些条件格式问题,但大多数似乎是根据数字/整数值而不是文本为单元格着色。

任何帮助都会很棒。

标签: vbams-wordrgb

解决方案


这段代码应该可以帮助您。您可以为不同的单词组合添加额外的 Case 语句并调整 RGB 值:

Dim objTable As Table
Dim iRowCounter As Integer
Dim iColumnCounter As Integer

Dim lngVeryGoodColor As Long
Dim lngGoodColor As Long

' Predefine colors
lngVeryGoodColor = RGB(112, 173, 71)
lngGoodColor = RGB(169, 208, 142)

' Loop through all tables in document
For Each objTable In ThisDocument.Tables

    For iRowCounter = 1 To objTable.Rows.Count

        For iColumnCounter = 1 To objTable.Columns.Count

            ' Get Table cell
            With objTable.Cell(iRowCounter, iColumnCounter)

                If InStr(.Range.Text, "Good") > 0 Then .Shading.BackgroundPatternColor = lngGoodColor
                If InStr(.Range.Text, "Moderate") > 0 Then .Shading.BackgroundPatternColor = lngGoodColor
                If InStr(.Range.Text, "Very good") > 0 Then .Shading.BackgroundPatternColor = lngVeryGoodColor
                If InStr(.Range.Text, "Minor") > 0 Then .Shading.BackgroundPatternColor = lngGoodColor

            End With

        Next

    Next

Next

推荐阅读