如何根据单元格内容使用 RGB 颜色将条件格式应用于 Word 单元格
How to apply conditional formatting to Word cells using RGB colours based on cell contents
我有大约 100 个大型 Word 文档,大约有每张50张桌子。我正在尝试找到一种快速格式化它们的方法(使用 VBA),这样我就不必手动为每个单元格着色。
我需要根据内容使用特定的 RGB 颜色为单元格着色。例如:"Very good"或"Minor"的单元格需要填写RGB 112,173,71。 "Good" 或 "Moderate" 的单元格需要为 RGB 169,208,142。
Table example
我有大约 10 个不同的单词组合需要着色。
我查了一些条件格式问题,但大多数似乎是根据 numeric/integer 值而不是文本为单元格着色。
任何帮助都会很棒。
这段代码应该可以让你开始。您可以为不同的单词组合添加额外的 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
我有大约 100 个大型 Word 文档,大约有每张50张桌子。我正在尝试找到一种快速格式化它们的方法(使用 VBA),这样我就不必手动为每个单元格着色。
我需要根据内容使用特定的 RGB 颜色为单元格着色。例如:"Very good"或"Minor"的单元格需要填写RGB 112,173,71。 "Good" 或 "Moderate" 的单元格需要为 RGB 169,208,142。
Table example
我有大约 10 个不同的单词组合需要着色。
我查了一些条件格式问题,但大多数似乎是根据 numeric/integer 值而不是文本为单元格着色。
任何帮助都会很棒。
这段代码应该可以让你开始。您可以为不同的单词组合添加额外的 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