【问题标题】:Format conditions with multiple conditions具有多个条件的格式条件
【发布时间】:2020-10-19 14:44:47
【问题描述】:

我正在尝试使用 VBA 为我的表格创建条件格式。 我在 C 列和 D 列中有数字。我需要条件格式来比较 C 列中的数字是否大于 D 列中的数字,并且同一行 D 列单元格不应为空白。如果是这种情况,C 列中的单元格将被着色为红色,但如果任一参数为 false,则不应应用格式条件。表格是动态的并且会改变它的大小。

    Dim ws As Worksheet
    Dim LastRow As Long

    For Each ws In ActiveWorkbook.Sheets
        If ws.Name = "Projects" Then
            LastRow = ThisWorkbook.Worksheets("Projects").Range("C" & ThisWorkbook.Worksheets("Projects").rows.Count).End(xlUp).Row
            With ws.Range("C2:C" & LastRow)
                .FormatConditions.Add Type:=xlExpression, Formula1:="=$C$2>$D$2 & $D$2<>"""
                .FormatConditions(.FormatConditions.Count).Interior.Color = RGB(255, 0, 0)
            End With
        End If
    Next ws

到目前为止,这给了我一个错误: 无效的过程调用或参数。我在这里做错了什么。

【问题讨论】:

  • "=$C$2&gt;$D$2 &amp; $D$2&lt;&gt;""" 无效。您正在尝试用 &amp; 字符连接 2 个范围?
  • 录制一个宏来做你想让它做的事情,然后看看它为那个参数做了什么。
  • 你想要AND,而不是&amp;

标签: excel vba


【解决方案1】:

Formula1 需要是 Excel 公式(不是 VBA),函数是 AND。请注意不要将绝对引用放入公式中,因此请删除其中的所有$。而且您必须将所有引号加倍,以便 VBA 将其发送到 Excel。 你的公式是=AND(C2&gt;D2,D2&lt;&gt;"") 所以把这一行放到你的代码中:

.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(C2>D2,D2<>"""")"

【讨论】:

  • 我知道这不是社交网络,但我必须说声谢谢。你给我的这方面的信息比我最近几天谷歌搜索的信息还要多。我总是尝试在我的公式中使用绝对值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多