【问题标题】:Using conditional format in VBA在 VBA 中使用条件格式
【发布时间】:2014-01-08 23:34:26
【问题描述】:

我正在使用循环在“D 列”的“每 4 行”中放置一个条件格式。但是,我无法正确获取代码。

我发生了两件不同的事情。首先,我在电子表格中显示了公式,公式周围有“”,条件格式不起作用。所以现在我正在尝试使用以下代码重写它,它告诉我编译错误预期语句结束。

任何有关如何使D(i-1)>sum(D(i):D(i+2) 阴影单元格红色工作的条件格式的帮助表示赞赏。

这是我试图遮蔽的 For/Next 循环的中间部分。

    Range("D" & (i - 1)).Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="D" & (i-1) & "> Sum(D" & i & "D" & (i + 2)")"

        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False

        i = i + 4

【问题讨论】:

  • Formula1:="D" & (i-1) & "> Sum(D" & i & "D" & (i + 2)")" 在末尾缺少一个 &:... & (i + 2) & ")"
  • 谢谢。我错过了。我还注意到我错过了 sum 函数中的“:”。现在,当我运行代码时,条件格式规则以 ="D4>Sum(D5:D7)" 的形式存在,但它实际上并没有做任何事情。管理规则框中的预览显示为我想要的红色,但“D4”确实突出显示并且它肯定大于接下来三个单元格的总和。

标签: excel vba


【解决方案1】:

这对我有用:

Sub Tester()

    Dim i As Long, fc As FormatCondition

    For i = 2 To 10 Step 4

        Set fc = ActiveSheet.Range("D" & (i - 1)).FormatConditions. _
                       Add(Type:=xlExpression, _
                       Formula1:="=D" & (i - 1) & "> Sum(D" & i & ":D" & (i + 2) & ")")

        fc.SetFirstPriority

        With fc.Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With

        fc.StopIfTrue = False

    Next i

End Sub

【讨论】:

  • 这让我到达了我需要的地方。谢谢你。现在我只是要抛出一个明确的格式声明,所以每次我运行这段代码时它都不会创建额外的格式规则。
【解决方案2】:

是否需要在 VBA 中执行此操作?我之所以问,是因为通过常规条件格式,您还可以轻松地将其应用于每 4 行。

为此,您只需要在条件格式中使用如下公式即可:

=AND(MOD(ROW($D5),4)=0, $D5 > SUM($D$2:$D4))

MOD 函数将行号除以 4 并检查余数是否为 4。

这不是你所要求的,但它可能会解决你的情况......

【讨论】:

  • 我插入了 mod 公式,但它只适用于一个单元格。我在 VBA 中这样做的原因是因为我需要它在每 4 个单元格中针对可变数量的单元格进行。我现在有 175 个零件,但下个月可能是 125 或 225 个。我已经编写了子例程来添加新部分并对它们进行排序。现在我只需要突出显示这个单元格,如果它大于后面三个的总和。
  • 我突出显示最后一行并命名它,并从第一行到命名行做了一个条件格式。但是,在我向该范围的中间添加更多行后,它起作用了,新行没有那种条件格式。
  • 确实,它就像你说的那样工作(在条件格式中使用我的公式),但是当你插入行时会搞砸。如果您问我,这是非常糟糕的 Excel 设计 - Excel 没有扩展格式适用的范围,而是对条件格式范围做出了各种奇怪的假设。我正在阅读,看看这是否可以改变 - 让你保持最新状态。
  • 与此处报告的问题相同,但我还没有找到解决方法。即使使用命名范围,条件格式也会变得混乱。 excelforum.com/excel-formulas-and-functions/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 2019-03-05
  • 1970-01-01
相关资源
最近更新 更多