#excel #vba
Вопрос:
Я пытаюсь заполнить активную ячейку формулой. Примером желаемой формулы является =SUMIF(K30:K40,DescVar,E30:E40), где DescVar-строковая переменная.
Вот фрагмент кода, который вызывает у меня проблемы:
If Selection.Value lt;gt; DescVar Then Selection.Offset(1, -6).Select Dim CalcRow As Integer, FromRow As Integer, ToRow As Integer CalcRow = ActiveCell.Row FromRow = CalcRow 1 ToRow = FromRow 10 Dim SumFormula As String SumFormula = "='SUMIF(K" amp; FromRow amp; ":K" amp; ToRow amp; "," amp; DescVar amp; ",E" amp; FromRow amp; ":E" amp; ToRow amp; ")" ActiveCell.Formula = SumFormula End If
Есть какие-нибудь идеи?
Комментарии:
1. в чем проблема с вашим кодом? Что происходит такого, чего не должно быть? Вам, вероятно, нужно удалить
'
2. Я продолжаю получать ошибку во время выполнения «1004». Ошибка, определяемая приложением или объектом
3. По какой линии? Вы пробовали это после удаления
'
в формуле?4. Я сделал, я получаю его на «ActiveCell. Формула = Сумма формул».
5. Поскольку вам нужно что-то подобное
=SUMIF(K1:K10,"foo",E1:E10)
, вы должны добавить кавычки вокругDescVar
. Что касаетсяDebug.Print
, проверьте вывод в ближайшем окне.
Ответ №1:
Поскольку конечный результат должен быть примерно таким =SUMIF(K1:K10,"foo",E1:E10)
, вам нужно добавить кавычки DescVar
, и их нужно удвоить:
SumFormula = "=SUMIF(K" amp; FromRow amp; ":K" amp; ToRow amp; ",""" amp; DescVar amp; """,E" amp; FromRow amp; ":E" amp; ToRow amp; ")"
Комментарии:
1. Это сработало, Бен, СПАСИБО! Я не могу поднять голос из-за отсутствия репутации, но вы спасли мне жизнь.