测试条件格式是否为 TRUE VBA 并突出显示整行

Test if conditional formatting is TRUE VBA and highlight entire row

我正在尝试通过条件格式确定特定单元格 return 是否为 TRUE 值,然后如果 return 为真则突出显示整行(甚至只是一个单元格) .条件格式在 B 列中,希望它突出显示整行。

如果 B 列中的条件格式 return 为 TRUE,我最终会尝试将 F 列中的数字相加,但是如果我可以简单地确定条件格式 [=31] =]是否正确。我搜索了每个论坛、站点、示例等。我可以找到但仍然无法使其工作。

我正在 运行宁条件格式来搜索多个不同实例的大量数据。我唯一能弄清楚如何做到这一点的方法是 运行 每个条件作为一个单独的条件格式。这是其中一个子项的一部分(每个子项有大约 30 种条件格式,大约有 10 个子项):

 Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNUMBER(SEARCH(""Acadia Realty Trust "",B1))"
 Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
 .PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNUMBER(SEARCH(""Aimco "",B1))"
 Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
 .PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"",B1))"
 Selection.FormatConditions(Selection.FormatConditions.count).SetFirstPriority
With Selection.FormatConditions(1).Interior
 .PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False

我只是说我不能简单地用条件格式检查同一个测试,因为有将近 300 个不同的测试。

更新:

我尝试了 Jeep 的建议,然后我在下面评论了构建多个潜艇,每个潜艇都有一个数组以适应所有 264 种条件,但是当我这样做时 它只突出显示了最后一个数组,不是第一个潜艇满足的所有条件。我使用了与下面建议的@Jeeped 相同的代码,但在数组中放入了 24 个条件,我可以将代码分成 11 个子,我的主要代码如下所示:

Public Sub REIT()
range("B:B").Select
Call A25
Call B25
Call C25
Call D25
Call E25
Call F25
Call G25
Call H25
Call I25
Call J25
Call K25
End Sub

我最后只用了两个帮助栏来重新搜索条件并对我需要的数据求和,但我仍然对突出显示有问题。

构建数组并使用循环。 AWith ... End With statement can handle the reference to the Application.Selection属性.

Option Explicit

Sub makeThreeCFrules()
    Dim v As Long, vCFRs As Variant

    vCFRs = Array("=ISNUMBER(SEARCH(""Acadia Realty Trust "", $B1))", vbYellow, _
                  "=ISNUMBER(SEARCH(""Aimco "", $B1))", vbYellow, _
                  "=ISNUMBER(SEARCH(""Alexandria Real Estate Equities, Inc"", $B1))", vbYellow)
    With Selection.EntireRow
        .FormatConditions.Delete
        For v = LBound(vCFRs) To UBound(vCFRs) Step 2
            With .FormatConditions.Add(Type:=xlExpression, Formula1:=vCFRs(v))
                .Interior.Color = vCFRs(v + 1)
            End With
        Next v
    End With
End Sub

您的公式存在问题,您需要使用 $B1 来锚定该列。

Alternate:

如果您可以在工作簿的其他位置放置搜索词列表,则只需 'reverse wildcard lookup'。


Sheet6!A2:A4 中的搜索词

Option Explicit

Sub makeAllCFrules()
    Dim v As Long, vCFRs As Variant

    With Selection.EntireRow
        .FormatConditions.Delete
        With .FormatConditions.Add(Type:=xlExpression, _
                Formula1:="=SUMPRODUCT(--ISNUMBER(MATCH(""*""&Sheet6!$A:$A&""*"",$B1, 0)))")
            .Interior.Color = vbYellow
        End With
    End With
End Sub

搜索词范围内不得包含空白行,这一点至关重要。如果有,您将搜索双通配符,这将包括所有内容。当然,可以修改提供的子过程以查找搜索项的地址,如果它们可能发生变化的话。


选择 B1:B99

后应用条件格式规则