将Excel条件格式公式调整为选定范围

时间:2014-01-23 16:43:58

标签: excel vba excel-vba

我正在尝试在各种选定范围上运行一系列宏来检查并查看单元格的数值是否大于指定值。这里的示例适用于值大于0.7的单元格,其他宏类似,只是它们使用的值大于值。

我遇到的问题似乎在于用于确定条件格式的公式;如果公式调用我选择的列中的单元格,则宏工作,否则它什么都不做。

示例:我选择单元格D5:D15,然后运行以下宏:

Sub Toluene()
'
' Toluene Macro
' Apply conditional formatting to Toluene cells with values greater than 0.7
'

'
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=AND(ISNUMBER(D5),D5>0.7)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
    .Bold = True
    .Italic = True
    .TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent6
    .TintAndShade = 0.799981688894314
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub

哪个工作正常。但是,如果我选择单元格G5:G10,并尝试将相同的宏应用于它,则不会发生任何事情(不应用正确的条件格式)。

我是否正确地想要以某种方式改变我的公式

"=AND(ISNUMBER(D5),D5>0.7)"

反映所选列,如果有,是否有人就我如何做到这一点提出建议?

1 个答案:

答案 0 :(得分:1)

尝试使用R1C1参考样式:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND(ISNUMBER(RC),RC>0.7)"

或者如果你不喜欢这个,你可以使用更复杂的代码:

Dim topLeftAddr As String

topLeftAddr = Replace(Selection.Cells(1, 1).Address, "$", "")

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=AND(ISNUMBER(" & topLeftAddr & ")," & topLeftAddr & ">0.7)"