【问题标题】:Excel VBA conditional formatting - correct syntax for formula1 argumentExcel VBA 条件格式 - 公式 1 参数的正确语法
【发布时间】:2018-04-21 01:43:07
【问题描述】:

在 Excel 2016 上运行通过 Excel VBA 进行条件格式设置存在问题。 我有以下简单的代码:

With targetSheet.Range("J:J")
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, _
            Formula1:="=AND(ISBLANK($J1), NOT(ISBLANK($A1)), ISBLANK($K1))"
        .FormatConditions(1).Interior.ColorIndex = 53
End With

targetSheet 已在别处定义,因此无需担心)。

此代码在我的计算机上运行良好。没有运行时错误,当我打开条件格式弹出窗口时,我看到正确的公式如下:

"=AND(ISBLANK($J1), NOT(ISBLANK($A1)), ISBLANK($K1))" 

(包括引号)

当我将此 Excel 发送给办公室中的其他人(我们所有人都有 Excel 2016)时,他们中的一些人收到以下错误:

“运行时错误'5':无效的过程调用或参数。”

调试后发现Error是=AND操作符引起的。

如果我删除=(等号),它在运行时不会失败,但条件格式功能是错误的。当我打开条件格式弹出窗口时,它显示:

="AND(ISBLANK($J1), NOT(ISBLANK($A1)), ISBLANK($K1))"

Formula1: 的正确语法是什么?

【问题讨论】:

  • 您使用的是什么版本的 Excel?以及您是如何发现错误是由=And 引起的?

标签: excel excel-formula runtime-error conditional-formatting vba


【解决方案1】:

不幸的是,CF 公式的编码必须与在目标计算机上输入的完全相同,因此容易受到计算机之间语言和区域问题的影响。您可以做的是让代码将公式输入到单元格中,然后读回该单元格的 FormulaLocal 属性,并在 CF 设置中使用它。

【讨论】:

  • 谢谢。你的回答给了我找到问题的线索。
  • 在我的 Excel 中,函数中的参数应该用逗号分隔。在其他计算机中,它是分号。例如,在我的 Excel 中,我应该写“=AND(Arg1, Arg2)”。在他们的 Excel 中,您应该写:“=AND (arg1;arg2)”。我想这是一个语言环境问题。所以,我想根据语言环境添加逗号或分号。你知道如何在代码中问这个条件吗?
  • 除了 @Rory 的有效答案之外,我返回 本地 CF 公式 的简单工作可能会引起一些兴趣 Highlight series of dates that met conditions
  • @T.M.这和我的建议不完全一样吗?
  • @T.M.完全同意!只是检查我没有错过任何东西。 :)
猜你喜欢
  • 2014-12-27
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多