使用VBA在Excel单元格中编写公式

使用VBA在Excel单元格中编写公式,vba,excel,Vba,Excel,我正在尝试使用VBA将公式写入Excel中的单元格。 我的问题是,当我在公式中使用分号(;)时,我得到一个错误: 运行时错误1004 我的宏如下所示: Sub Jours_ouvres() Dim Feuille_Document As String Feuille_Document = "DOCUMENT" Application.Worksheets(Feuille_Document).Range("F2").Formula = "=SUM(D2;E2

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

运行时错误1004

我的宏如下所示:

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

本例中使用的正确字符是一个完整的冒号(
),而不是分号(
)。

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

(...)Formula = "=SUM(D2,E2)"
(“”而不是“”),它可以工作


如果在VB脚本编辑器(F8)中单步执行子程序,则可以将
范围(“F2”).Formula
添加到“监视”窗口中,并从VB的角度查看公式的外观。似乎Excel中显示的公式有时与VB看到的公式不同…

您可以尝试使用FormulaLocal属性而不是公式。那么分号就可以了。

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

逗号(
)将仅对所讨论的两个单元格求和


冒号(
)将对范围内的所有单元格求和,并由这两个单元格定义角。

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

该公式只添加了D2和E2单元格。它在这种情况下有效,因为该区域只有两个单元格。例如,如果范围是D2:G2,则使用逗号只会添加范围D2和G2中的第一个和最后一个单元格,而不是全部四个单元格。对反对者来说:虽然eJames在更一般的回答中是正确的,但我的回答在这种特定情况下是正确的。如果你投了反对票,请解释原因。很好!我没有意识到excel公式可以在不同的地区使用不同的字符(!)真是一场噩梦!这不是错误的原因。见公认的答案。