繁体   English   中英

在FormatConditions中,如何使“ if”代码对所有F列动态显示?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM