2008-12-04 247 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忽略了真正的問題並給出了正確的答案(這對我也是正確的答案 - 我是一個在意大利工作的英國人,講公司)。

相關問題