【问题标题】:Excel VBA Can't create more than 3 conditional formatting rules?Excel VBA 不能创建超过 3 个条件格式规则?
【发布时间】:2021-08-29 14:24:06
【问题描述】:

我尝试使用 VBA 创建一些条件格式规则,但我不断收到第三条规则的“下标超出范围”错误。

这是我当前的代码

Dim MyRange As Range
Dim MyRange2 As Range
Dim MyRange3 As Range

'Define the range for the respective rules
Set MyRange = Range("M4:N30")
Set MyRange2 = Range("A4:Z30")
Set MyRange3 = Range("O4:P30")

MyRange2.FormatConditions.Delete

'Rule 1
MyRange.FormatConditions.Add Type:=xlExpression, Formula1:="=$M4<>""NA""", Formula2:="=$N4<>""NA"""
MyRange.FormatConditions(1).Interior.Color = RGB(255, 150, 0)

'Rule 2
MyRange2.FormatConditions.Add Type:=xlExpression, Formula1:="=$O4>56", Formula2:="=$P4>56"
MyRange2.FormatConditions(2).Interior.Color = RGB(255, 255, 0)

'Rule 3
MyRange3.FormatConditions.Add Type:=xlExpression, Formula1:="=$O4<>$P4"
MyRange3.FormatConditions(3).Interior.Color = RGB(255, 255, 0)

如果我将 FormatConditions(3) 中的“3”更改为 1 或 2,则不会出现错误。关于导致错误的原因有什么建议吗?

感谢您的宝贵时间

【问题讨论】:

  • MyRange3 似乎是问题所在,而不是规则的数量。
  • FormatConditions.Add 返回一个可以直接使用的对象引用,而不是依赖于计数。

标签: excel vba formatting conditional-statements


【解决方案1】:

你应该使用:

MyRange3.FormatConditions(2).Interior.Color = RGB(255, 255, 0)

因为对于指定的范围,即O4:P30,它是第二条规则,它会给您错误,因为规则号 3 不存在!

【讨论】:

  • 谢谢!有效!但我不明白你所说的第二条规则是什么意思。就像我的第一条规则适用于 MyRange,第二条规则适用于 MyRange2,现在我的第三条规则应该只影响 MyRange3
  • @ProgrammingPikachu 规则应用于单元格,而不是工作表。因此,如果我有一个“A2:D2”规则和另一个“B1:B4”规则,那么只有单元格 B2 会有一个FormatConditions(2);其余的单元格要么有 no 条件,要么只有FormatConditions(1)。这就是为什么你最好跳过它,并使用With MyRange.FormatConditions.Add(Type:=xlExpression, Formula1:="=$M4&lt;&gt;""NA""", Formula2:="=$N4&lt;&gt;""NA"""): .Interior.Color = RGB(255, 150, 0): End With——这样数字就无关紧要了。
猜你喜欢
  • 2016-06-06
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多