2008-12-04 4 views
19

Я пытаюсь использовать VBA для записи формулы в ячейку в Excel. Моя проблема заключается в том, что, когда я использую точку с запятой (;) в моей формуле, я получаю сообщение об ошибке:Напишите формулу в ячейке Excel с помощью VBA

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

Для downvoters: Хотя eJames верен в своем более генетическом ответе, мой ответ верен в этом конкретном случае. Если вы уменьшите, объясните, почему. – Treb 2008-12-05 08:58:21

5

Правильный символ (запятая или двоеточие) зависит от цели.

Запятая (,) будет суммировать только две ячейки, о которых идет речь.

Colon (:) суммирует все ячейки в пределах диапазона с углами, определяемыми этими двумя ячейками.

5

Treb, проблема Matthieu была вызвана использованием Excel на неанглийском языке. Во многих языковых версиях ";" является правильным разделителем. Выполняются даже функции (SUM может быть SOMMA, SUMME или любой другой, в зависимости от того, на каком языке вы работаете). Excel, как правило, понимает эти различия, и если созданная французами книга открывается бразильцем, у них обычно не будет никаких проблем. Но VBA говорит только по-английски, поэтому для тех из нас, кто работает в одном (или более) иностранном языке, это может быть головная боль. Вы и CharlesB оба дали ответы, которые были бы в порядке для пользователя из США, но Микко ухаживал за РЕАЛЬНОЙ проблемой и дал правильный ответ (что тоже было правильным для меня тоже - я британец, работающий в Италии для немецко- говорящая компания).