首页 > 解决方案 > 在 VBA 中编写公式会导致编译错误 - 双引号

问题描述

我正在研究 Excel VBA 宏。

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

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

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

=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:
由对象或应用程序定义的错误。

谁能告诉我如何正确编写它?

标签: vbaexceldouble-quotes

解决方案


.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 中使用英文公式会自动将其转换为单元格中正确的本地化形式(用户不会注意到任何差异)。

另请注意,英文分隔符是,,而意大利(和大多数欧洲)分隔符是;.


推荐阅读