【问题标题】:Write a formula in an Excel Cell using VBA使用 VBA 在 Excel 单元格中编写公式
【发布时间】:2008-12-04 16:43:50
【问题描述】:

我正在尝试使用 VBA 将公式写入 Excel 中的单元格。 我的问题是,当我在公式中使用分号 (;) 时,出现错误:

Run-time error 1004

我的宏如下:

Sub Jours_ouvres()
    Dim Feuille_Document As String
    Feuille_Document = "DOCUMENT"        
    Application.Worksheets(Feuille_Document).Range("F2").Formula = "=SUM(D2;E2)"    
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您可以尝试使用 FormulaLocal 属性而不是 Formula。那么分号应该可以工作。

    【讨论】:

    • 好点!我没有意识到 excel 公式可以在不同的语言环境中使用不同的字符(!)真是一场噩梦!
    【解决方案2】:

    在这种情况下使用的正确字符是完整的冒号 (:),而不是分号 (;)。

    【讨论】:

      【解决方案3】:

      正确的字符(逗号或冒号)取决于用途。

      逗号 (,) 将仅对有问题的两个单元格求和。

      冒号 (:) 会将范围内的所有单元格与由这两个单元格定义的角相加。

      【讨论】:

      • 这不是错误的原因。查看接受的答案。
      【解决方案4】:

      Treb,Matthieu 的问题是由使用非英语语言的 Excel 引起的。在许多语言版本中“;”是正确的分隔符。甚至函数也会被翻译(SUM 可以是 SOMMA、SUMME 或其他任何内容,具体取决于您使用的语言)。 Excel 通常会理解这些差异,如果巴西人打开法语创建的工作簿,他们通常不会有任何问题。 但是 VBA 只会说美国英语,所以对于我们这些使用一种(或多种)外国语言的人来说,这可能会让人头疼。 你和 CharlesB 都给出了对美国用户来说可以的答案,但 Mikko 理解了真正的问题并给出了正确的答案(这对我来说也是正确的答案 - 我是在意大利为讲德语的人工作的英国人公司)。

      【讨论】:

        【解决方案5】:

        我不知道为什么,但是如果你使用

        (...)Formula = "=SUM(D2,E2)"
        

        (',' 而不是 ';'),它可以工作。

        如果您在 VB 脚本编辑器 (F8) 中单步执行您的子程序,您可以将 Range("F2").Formula 添加到监视窗口,并从 VB 的角度查看公式的样子。好像Excel本身显示的公式有时和VB看到的公式不一样……

        【讨论】:

        • 该公式仅添加单元格 D2 和 E2。它在这种情况下有效,因为该范围只有两个单元格。例如,如果范围是 D2:G2,则使用逗号将仅添加范围中的第一个和最后一个单元格:D2 和 G2,而不是全部四个。
        • 致反对者:虽然 eJames 在他更笼统的回答中是正确的,但在这种特定情况下我的回答是正确的。如果您投反对票,请解释原因。
        猜你喜欢
        • 2017-03-06
        • 2018-12-19
        • 2022-01-14
        • 1970-01-01
        • 2015-05-08
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多