VBA Excel宏公式编译错误-双引号

时间:2018-08-08 12:55:49

标签: excel vba excel-vba double-quotes

我正在处理Excel VBA宏。

我必须在单元格内编写一个公式。

我所指的公式是CONTA.SE()。它的行为与COUNTIF()相同。我猜这是意大利语的Excel COUNTIF()版本。

更准确地说,我要实现的公式是:

=CONTA.SE(Report!E:E;"<20")

,以便处理从 E2 到最后一个非空单元格的单元格值。

我想我因为双引号而遇到麻烦。

我尝试了许多解决方案,例如:

Cells(5, 2).Formula = "=CONTA.SE(Report!E2:E" & rowCount & ";" & Chr(34) & "<20" & Chr(34) & ")"

或:

Cells(5, 2).Formula = "=CONTA.SE(Report!E2:E" & rowCount & ";" & """<20""" & ")"

我收到的错误消息是:

  

运行时错误1004:
    对象或应用程序定义的错误。

任何人都可以告诉我如何正确书写吗?

1 个答案:

答案 0 :(得分:3)

.Formula使用公式的英文版本。如果要使用本地化的公式(例如意大利语),则必须使用.FormulaLocal

所以要么本地化:

Cells(5, 2).FormulaLocal = "=CONTA.SE(Report!E2:E" & rowCount & ";" & Chr(34) & "<20" & Chr(34) & ")"

或英语

Cells(5, 2).Formula = "=COUNTIF(Report!E2:E" & rowCount & "," & Chr(34) & "<20" & Chr(34) & ")"

请注意,只有在意大利语Excel中使用时,本地化(意大利语)形式才有效,而英语版本在任何Excel中都可以使用。因此,建议在VBA中使用英语版本。在VBA中使用英语公式会自动将其转换为单元格中的正确本地化形式(用户不会注意到任何差异)。

还请注意,英文分隔符为,,而意大利语(也是欧洲大多数)分隔符为;