【问题标题】:Writing formula in VBA results in Compile Error - Double Quotes在 VBA 中编写公式会导致编译错误 - 双引号
【发布时间】:2019-01-15 18:10:11
【问题描述】:

我正在处理 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:
由对象或应用程序定义的错误。

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

【问题讨论】:

    标签: vba excel double-quotes


    【解决方案1】:

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

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

    【讨论】:

    • 亲爱的 Pᴇʜ,非常感谢您的回答。我已经用 FormulaLocal 替换了 Formula,现在它可以工作了。你拯救了我的一天! Ps:我想我已经尝试过使用英文版的公式,但我得到了错误。我要再试一次。再次感谢您,真的
    • 英文应该可以。你注意到英文版用,替换公式中的;了吗?
    • 我看错了,我以为你指的是 Cells() 中的逗号。也许您指的是公式中的分号。明天我试试,我认为它会奏效。再次感谢 Pᴇʜ;真的。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多