我正在运行时创建一个 Excel 文档,其中包含一堆我希望有条件地格式化的值。在从头开始进行各种尝试以及使用/修改从 Excel 的宏记录器输出的代码时,我遇到了与格式覆盖相关的一致问题。
我在下面发布了一段代码,可以说我已经测试过,以确保我的选择范围是有效的,并且适合我想要有条件地格式化的内容。有一些重叠,但奇怪的是第一种条件格式只具有第二种条件格式的一个属性。含义 D5:工作表的结尾最终具有绿色字体,而不是应有的红色。评论代码的每个部分确实允许它们独立工作,但我猜这是以某种方式进一步指定条件格式的问题?我尝试了几种不同的情况,下面是经过修改的代码:
编辑(更新代码):
'First conditional format, check sheet for values > 50 and make text red.
With xl.range("D5:" & theLastColumn & lastRow)
.FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=50"
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
'Second conditional format, check specific row (row 5 in the example)
'for values > 40, and fill interior with green in addition to dark green text.
With xl.range("D" & Infectivity & ":" & theLastColumn & Infectivity)
.FormatConditions.add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=40"
With .FormatConditions(2).Font
.Color = -16752384
.TintAndShade = 0
End With
With .FormatConditions(2).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
End With
那么拥有多种条件格式(可能重叠范围)并且仍然让它们都按预期运行的最佳方法是什么?我已经尝试过很多次调试,我确信我忽略了一些简单的东西。我还尝试了几种不同的方法来指定单独的 formatconditions(1) 和 formatconditions(2),但仍然收到奇怪的问题。
编辑:
我继续遇到同样问题的 VBA 代码。
Sub conditionalFormat()
With Range("D5:BA9")
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=50"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
With Range("D9:BA9")
.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=40"
With .FormatConditions(2).Font
.Color = -16752384
.TintAndShade = 0
End With
With .FormatConditions(2).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
.FormatConditions(2).StopIfTrue = False
End With
End Sub
即使使用适当的(红色文本)条件格式的 SetFirstPriority,它也会以某种方式被覆盖。我在这里错过了什么吗?