Ответ 1
Вы можете попробовать использовать свойство FormulaLocal вместо формулы. Тогда точка с запятой должна работать.
Я пытаюсь использовать 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
Вы можете попробовать использовать свойство FormulaLocal вместо формулы. Тогда точка с запятой должна работать.
В этом случае правильным символом является полный двоеточие (:
), а не точка с запятой (;
).
Правильный символ (запятая или двоеточие) зависит от цели.
Запятая (,
) будет суммировать только две ячейки, о которых идет речь.
Colon (:
) суммирует все ячейки в пределах диапазона с углами, определяемыми этими двумя ячейками.
Treb, проблема Matthieu была вызвана использованием Excel на неанглийском языке. Во многих языковых версиях ";" является правильным разделителем. Выполняются даже функции (SUM может быть SOMMA, SUMME или любой другой, в зависимости от того, на каком языке вы работаете). Excel, как правило, понимает эти различия, и если созданная французами книга открывается бразильцем, у них обычно не будет никаких проблем. Но VBA говорит только на английском языке, поэтому для тех из нас, кто работает в одном (или более) иностранном языке, это может быть головной болью. Вы и CharlesB оба дали ответы, которые были бы в порядке для американского пользователя, но Микко поддался РЕАЛЬНОЙ проблеме и дал правильный ответ (что тоже было правильным для меня тоже - я британец, работающий в Италии для немецкоговорящего компания).
Я не знаю почему, но если вы используете
(...)Formula = "=SUM(D2,E2)"
(',' вместо ';'), он работает.
Если вы перейдете через свой суб в редакторе VB script (F8), вы можете добавить Range("F2").Formula
в окно просмотра и посмотреть, как выглядит формальный вид с точки зрения VB. Кажется, что формула, показанная в самом Excel, иногда отличается от формы, которую видит VB...