[英]In FormatConditions how do i make the “if” code as dynamic for all F column?
我想将“ $ F1”更改为cell(i,6),但它不起作用....为什么?
Sub macro2()
Dim i As Long
For i = 1 To 2
Cells(i, 6).Select
With Range(Cells(i, 1), Cells(i, 5))
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=IF(***$F1***>5,TRUE,FALSE)"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
End With
End With
Next i
End Sub
你可以试试看
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=IF($F" & i & ">5, TRUE, FALSE)"
...但是这个公式是多余的。 这将产生完全相同的布尔结果。
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=$F" & i & ">5"
您使用的公式是动态的。 您无需遍历各行。 CF规则公式的作用就像是R1C1公式一样; 也就是说,它们对于“ 应用于:”范围中的每个单元格都是完全相同的。 您也可以一次设置所有i单元,并避免循环。
with activesheet
with .range("F1:F2")
.FormatConditions.Add Type:=xlExpression, Formula1:= "=$F1>5"
with .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
.Interior.Color = 5287936
end with
end with
end with
根据您的代码,似乎您想要应用FormatConditions
的范围是A1:E2
。 同样, FormatConditions
将基于每个Row
F
列的值。 如果正确,请使用以下代码:
Sub FormatConditions_Dynamic()
Dim rRow As Range
For Each rRow In ActiveSheet.Range("A1:E2").Rows
With rRow
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=" & Cells(.Row, 6).Address(0) & ">5"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With: End With: End With: Next
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.