【问题标题】:Conditional formatting Error 5, Syntax error and requests use of "="条件格式错误 5、语法错误和请求使用“=”
【发布时间】:2015-10-25 14:24:25
【问题描述】:

我整天都在与这个问题作斗争,但不知道为什么会这样。

每当我使用 VBA(并且因为通过 Excel 的 GUI)添加新的条件格式时,它都不会让我根据该行的第一个单元格中的文本编写一个公式来突出显示该行。不,为了让这更令人困惑,我稍后在 sub 中有几乎相同的代码,它们做同样的事情(使用不同的文本),但 Excel 没有给我一个错误。

下面给我一个运行时错误“5”无效的过程或参数

Range("A10", Range("A10").Offset(ItemsCount - 1, CLPCount + 2)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF($A10=""Duplication"",TRUE,FALSE)"
Selection.FormatConditions(1).Interior.ColorIndex = 3
Selection.FormatConditions(1).Font.ColorIndex = 2
Selection.FormatConditions(1).StopIfTrue = False

并且说我应该使用“=”,当我尝试运行代码时,它告诉我存在语法问题。

   Range("A10", Range("A10").Offset(ItemsCount - 1, CLPCount + 2)).Select
   Selection.FormatConditions.Delete
   Selection.FormatConditions.Add(Type:=xlExpression, Formula1:="=IF($A10=""Duplication"",TRUE,FALSE)")
   Selection.FormatConditions(1).Interior.ColorIndex = 3
   Selection.FormatConditions(1).Font.ColorIndex = 2
   Selection.FormatConditions(1).StopIfTrue = False

然后,如果我从公式中删除绝对引用列的 $,它会毫无问题地通过,但不提供所需的功能。如果我将 " 放在单元格引用周围,也是一样。

================================================ ==============================

非常感谢提供帮助的人。 除了我,我们都很好,我错了,也对了……这就是我运行 Excel 的方式。 Excel 在 R1C1 公式模式下运行,因此问题出在在此模式下使用 Excel 时条件格式的公式中使用的单元格引用样式。

【问题讨论】:

    标签: excel excel-formula excel-2007 conditional-formatting vba


    【解决方案1】:

    将公式行更改为:

    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A10=""Duplication"""
    

    我怀疑无论出于何种原因,根据您的区域设置,公式字符串无效 - 例如,您应该使用分号而不是逗号。

    【讨论】:

    • 我正要写一个答案。它让它通过,但公式不会突出显示该行。
    • 在这里完美运行。例如,您确定 A 中的单元格没有前导或尾随空格吗?
    • 除了“Ok”或“Duplication”之外什么都没有,因为它是一个选择文本的公式,然后例程继续将公式的输出转换为静态文本。
    • 我只能说它对我有用,正如我所期望的那样,我看不出它有任何失败的原因。代码运行后数据验证是否在工作表上到位?
    • 我和你在一起,Rory,我在过去一年里写过很多次这种类型的代码,以前从来没有遇到过这种麻烦。我刚刚关闭了文件,打开了它,尝试了你给出的代码,它再次给出了无效的过程调用错误。
    【解决方案2】:

    我不是 100% 知道手头的问题是什么。我将您的代码重写为:

    Sub conditionalFormatting()
    Range("A10", Range("A10").Offset(0, 10)).Select
    With Selection.FormatConditions
        .Delete
        .Add Type:=xlExpression, Formula1:="=IF($A10=" & Chr(34) & "Duplication" & Chr(34) & ",TRUE,FALSE)"
    End With
    With Selection.FormatConditions(1)
        .Interior.ColorIndex = 3
        .Font.ColorIndex = 2
        .StopIfTrue = False
    End With
    End Sub
    

    (将偏移更改为硬编码值)并且它似乎做了程序应该做的事情(如果 $A10 是“复制”,则将区域标记为红色?)。能否进一步说明?

    【讨论】:

    • 我不确定我能不能。整个例程对 2 个报告进行一系列检查。在这种情况下,我不能只检查重复项并假定一个动作,所以我必须突出显示并停止用户输入。 A 列声明该行是否正常或重复。所以条件格式使用它来知道该行是否应该用白色文本格式化为红色。由于每次运行例程时范围都不同,因此我无法对添加条件的区域进行硬编码。
    • 刚刚尝试将偏移量强制为硬编码值,但我没有得到任何不同。
    【解决方案3】:

    如对原始问题的编辑中所述。

    问题源于 Excel 选项中选择的引用样式。使用 R1C1 引用样式时,将不允许您在条件格式公式中使用 A1 引用样式。

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 2013-09-12
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多