Напишите формулу в ячейке Excel, используя VBA

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

Run-time 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

person Matthieu    schedule 04.12.2008    source источник


Ответы (5)


Вы можете попробовать использовать свойство FormulaLocal вместо Formula. Тогда точка с запятой должна работать.

person Community    schedule 09.12.2008
comment
Хорошая точка зрения! Я не понимал, что формулы Excel могут использовать разные символы в разных локалях (!) Какой кошмар! - person e.James; 09.12.2008

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

person e.James    schedule 04.12.2008

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

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

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

person KnomDeGuerre    schedule 09.12.2008
comment
Это не причина ошибки. Смотрите принятый ответ. - person brettdj; 08.12.2013

Треб, проблема Матье была вызвана использованием Excel не на английском языке. Во многих языковых версиях ";" это правильный разделитель. Переводятся даже функции (СУММ может быть СОММА, СУМММ или чем-то еще, в зависимости от того, на каком языке вы работаете). Excel, как правило, понимает эти различия, и если книгу, созданную на французском языке, открывает бразилец, у них обычно не возникает никаких проблем. Но VBA говорит только на американском английском, поэтому для тех из нас, кто работает с одним (или несколькими) иностранными языками, это может стать головной болью. Вы и CharlesB оба дали ответы, которые были бы приемлемы для пользователя из США, но Микко понял НАСТОЯЩУЮ проблему и дал правильный ответ (который также был правильным для меня - я британец, работающий в Италии на немецкоязычную компанию). Компания).

person DiGiMac    schedule 09.07.2013

Я не знаю почему, но если вы используете

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

(',' вместо ';'), это работает.

Если вы пошагово пройдете по своей подпрограмме в редакторе сценариев VB (F8), вы можете добавить Range("F2").Formula в окно наблюдения и посмотреть, как выглядит формуляр с точки зрения VB. Кажется, что формула, показанная в самом Excel, иногда отличается от формулы, которую видит VB...

person Treb    schedule 04.12.2008
comment
Эта формула добавляет только ячейки D2 и E2. В данном случае это работает, потому что в этом диапазоне было всего две ячейки. Например, если диапазон был D2:G2, использование запятой добавило бы только первую и последнюю ячейки в диапазоне: D2 и G2, а не все четыре из них. - person e.James; 04.12.2008
comment
Противникам: в то время как eJames прав в своем более общем ответе, мой ответ правильный в этом конкретном случае. Если минусуете, объясните почему. - person Treb; 05.12.2008