Excel VBA条件格式 - 正确的formula1参数语法

时间:2017-11-08 11:27:40

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

通过在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':无效的过程调用或参数。”

调试后,我发现错误是因为=AND运算符。

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

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

Formula1:的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

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