Word表格单元格的条件格式,每次单元格值更改后自动运行



我有一个风险评估表单模板,希望它能在文档中的所有表格中,当表格中的数字发生变化时,它们的颜色会根据值而变化。

我已经尝试过了,但一次只能让它改变一张选定表格的颜色,而且不知道如何在每次更改表格后自动"运行"。

到目前为止,我得到的是:

Sub ColourAllTables()
Dim oTable As Table
Dim oCell As Cell
Application.ScreenUpdating = False
For Each oTable In ActiveDocument.Tables
For Each oCell In oTable.Range.Cells
Select Case Split(c.Range.Text, vbCr)(0)
Case 1: c.Shading.BackgroundPatternColor = wdColorGreen
Case 2: c.Shading.BackgroundPatternColor = wdColorGreen
Case 3: c.Shading.BackgroundPatternColor = wdColorGreen
Case 4: c.Shading.BackgroundPatternColor = wdColorYellow
Case 5: c.Shading.BackgroundPatternColor = wdColorYellow
Case 6: c.Shading.BackgroundPatternColor = wdColorYellow
Case 7: c.Shading.BackgroundPatternColor = wdColorYellow
Case 8: c.Shading.BackgroundPatternColor = wdColorYellow
Case 9: c.Shading.BackgroundPatternColor = wdColorYellow
Case 10: c.Shading.BackgroundPatternColor = wdColorYellow
Case 11: c.Shading.BackgroundPatternColor = wdColorRed
Case 12: c.Shading.BackgroundPatternColor = wdColorRed
Case 13: c.Shading.BackgroundPatternColor = wdColorRed
Case 14: c.Shading.BackgroundPatternColor = wdColorRed
Case 15: c.Shading.BackgroundPatternColor = wdColorRed
Case 16: c.Shading.BackgroundPatternColor = wdColorRed
Case 17: c.Shading.BackgroundPatternColor = wdColorRed
Case 18: c.Shading.BackgroundPatternColor = wdColorRed
Case 19: c.Shading.BackgroundPatternColor = wdColorRed
Case 20: c.Shading.BackgroundPatternColor = wdColorRed
Case 21: c.Shading.BackgroundPatternColor = wdColorRed
Case 22: c.Shading.BackgroundPatternColor = wdColorRed
Case 23: c.Shading.BackgroundPatternColor = wdColorRed
Case 24: c.Shading.BackgroundPatternColor = wdColorRed
Case 25: c.Shading.BackgroundPatternColor = wdColorRed
Case Else: c.Shading.BackgroundPatternColor = wdColorAutomatic
End Select
Next
Next
Application.ScreenUpdating = True
End Sub 

在我看来,最简单的解决方案是使用Excel的条件格式。

然而,可以为word中的表单元格构建一个事件系统
代码相当大,我把它放在要点中。

我还在这里上传了一个演示文档。


我试图尽可能多地注释代码,以便于理解。

要使用,请通过修改CellEventsManagerModule模块中的EventManager子例程来定义每个事件的行为。

即使我建议您尝试理解整个代码(这是一个很好的练习!(,我认为您也不需要。
您可以只关注EventManager子例程和我提供的示例。

实施您的解决方案应该不会太难,但如果您在执行过程中遇到问题,请毫不犹豫地在评论中寻求帮助!


附带说明一下,Select Case语法为您尝试的操作提供了更好的解决方案

Select Case Split(c.Range.Text, vbCr)(0)
Case 1 To 3: c.Shading.BackgroundPatternColor = wdColorGreen
Case 4 To 10: c.Shading.BackgroundPatternColor = wdColorYellow
Case 11 To 25: c.Shading.BackgroundPatternColor = wdColorRed
Case Else: c.Shading.BackgroundPatternColor = wdColorAutomatic
End Select

查看此以获取有关Select Case语法的更多信息!

最新更新