2008-12-04 160 views
19

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

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 

回答

18

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

+0

好点!我没有意识到,Excel的公式可以在不同的语言环境中使用不同的角色(!)多么噩梦! – 2008-12-09 03:06:25

5

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

-1

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

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

( ' '而不是' ;'),它的工作原理。

如果您在VB脚本编辑器(F8)中浏览您的子文件夹,您可以将Range("F2").Formula添加到监视窗口,并从VB的角度查看该文件的外观。看来Excel中显示的公式有时与VB看到的公式不同...

+2

该公式仅添加单元格D2和E2。它适用于这种情况,因为该范围只有两个单元格。例如,如果范围是D2:G2,则使用逗号将只添加范围中的第一个和最后一个单元格:D2和G2,而不是全部四个单元格。 – 2008-12-04 16:52:34

+0

对于下流者:尽管eJames在他的更为通用的答案中是正确的,但在这个特定情况下,我的回答是正确的。如果你倒退了,解释原因。 – Treb 2008-12-05 08:58:21

5

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

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

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

5

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

相关问题