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

20

我正在尝试使用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
5个回答

21

您可以尝试使用FormulaLocal属性而不是Formula。然后分号应该可以正常工作。


好观点!我没有意识到 Excel 公式在不同的语言环境下可以使用不同的字符(!)真是一场噩梦! - e.James

5
Treb,Matthieu的问题是由于在非英语语言下使用Excel引起的。在许多语言版本中,";"是正确的分隔符。即使函数也被翻译(根据您所使用的语言,SUM可以是SOMMA、SUMME或其他)。通常,Excel会理解这些区别,如果一个法国创建的工作簿被巴西人打开,他们通常不会遇到任何问题。 但VBA只能使用美式英语,所以对于我们在一个(或多个)外语环境中工作的人来说,这可能是一个头痛的问题。 你和CharlesB都给了一个对于美国用户来说没有问题的答案,但Mikko理解了真正的问题并给出了正确的答案(这对我也是正确的答案——我是一名在意大利为一家德语公司工作的英国人)。

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

5

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

逗号 (,) 只会对两个单元格求和。

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


这不是错误的原因。请查看已接受的答案。 - brettdj

-1

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

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

(","而非";"),它可以工作。

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


2
该公式仅添加单元格D2和E2。这在此情况下可行,因为该区域仅有两个单元格。例如,如果该区域是D2:G2,则使用逗号将仅添加范围中的第一个和最后一个单元格:D2和G2,而不是所有四个单元格。 - e.James
给那些踩贴的人:虽然eJames的回答更通用,但我的回答在这个特定情况下是正确的。如果你要踩贴,请解释原因。 - Treb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接