【问题标题】:VBA How do I conditionally format a range of cells based on the value of one cell in that range?VBA 如何根据该范围内一个单元格的值有条件地格式化一系列单元格?
【发布时间】:2021-07-20 21:14:40
【问题描述】:

如果该行中特定单元格的值显示“GAT1”,我的目标是使整行的文本变为灰色。我可以使用常规条件格式很好地做到这一点,但我正在努力弄清楚如何使用宏自动创建这种格式。

我的问题实际上归结为我的格式设置标准使用公式来指定文本字符串。我的理解是我通常必须将文本字符串放在引号中,否则 VBA 将无法识别它们,但是 VBA 的语法不允许我将所述文本字符串放在引号中,因为包含此字符串的公式已经包含在引号中本身。 (例如,我试图这样写我的条件 - Formula1:="=F1="GAT1"" 或 Formula1:="=F1=GAT1" 但这些选项都没有产生预期的结果)

下面的代码是我最近的尝试。我试过分离出文本字符串并将其连接在一起,但这没有奏效。

Dim MyRange As Range

Set MyRange = Range("A1:P200")
    MyRange.FormatConditions.Add Type:=xlExpression, Formula1:="=$F1" & "=GAT1"
        With MyRange.FormatConditions(1)
            .Font.Color = RGB(217, 217, 217)
        End With

非常感谢有关如何解决此问题的任何想法。

【问题讨论】:

    标签: excel vba string formula conditional-formatting


    【解决方案1】:

    像这样:

    Dim MyRange As Range
    
    Set MyRange = Range("A1:P200")
    With MyRange.FormatConditions.Add(Type:=xlExpression, Formula1:="=$F1=""GAT1""")
        .Font.Color = RGB(217, 217, 217)
    End With
    

    【讨论】:

    • 所以这是孤立的,但是我遇到了一个新问题。在我的代码中的同一张表上,我还有其他条件格式语句用于各种范围。在我想使用这段代码之前,它们都来了。在执行这些代码行之前,我通过前面的代码行设置的所有条件格式都是应有的。但是,当这些行执行时,它会更改我创建的其他条件语句的范围。知道为什么会这样做吗?
    • 为了进一步澄清,如果我将代码更改为仅更改 F 列中单元格的字体(与具有“GAT1”的单元格相同的列),我不会遇到任何问题。当我试图扩大这个范围以包含我遇到问题的单元格时。
    • 您能否更新您的问题以包含足够的代码来复制问题?
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2014-10-12
    • 2015-12-26
    • 2013-07-03
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多