Excel vba вставить формулу в ячейку

Я пытаюсь написать какой-нибудь VBA, который будет добавлять текст заголовка к 3 ячейкам, а затем заполнять формулу вплоть до последней строки. Я написал ниже, что записывает заголовки без проблем, но когда дело доходит до моего первого. .Formula бросает

Ошибка приложения или объекта

Что нужно изменить, чтобы этот макрос успешно выполнялся? (Формулы были извлечены непосредственно из формулы в ячейке, поэтому я знаю, что они являются действительными формулами, по крайней мере, на «переднем конце»)

Проблема, вероятно, в том, что вы избегаете кавычек с формулой.

Что вам нужно это:

для первого, например. Другие цитаты должны быть удвоены.

В качестве дополнительного примечания было бы также лучше указать лист, над которым вы работаете, что-то вроде:

Если вы этого не сделаете, иногда вы можете столкнуться с ошибками при выполнении кода.

  1. Как предложено OpiesDad, чтобы минимизировать двусмысленность, избегайте ActiveCell и тому подобное.
  2. Использование Select также значительно снизит производительность по сравнению с непосредственным назначением для ячеек.
  3. Я почти уверен, что вам нужно избегать кавычек в формулах Excel внутри VBA, удваивая кавычки, поэтому обычная пустая строка становится """" . У вас также есть Issue в одинарных кавычках в формуле, которая, я уверен, приведет к ошибке в Excel; это также должно быть в двойных кавычках.
  4. Мне трудно понять, что на самом деле делает Range("E2:E" & Cells(Rows.Count, "C").End(xlUp).Row) , но звучит так, как будто вы хотите выбрать E2 для последний использованный ряд листа. Избегайте Rows.Count или просто вообще Rows.Count к строкам листа, так как это перейдет к строке 10 ^ 31. Используйте Worksheet.UsedRange чтобы получить диапазон от первой строки и столбца с содержимым до последней строки и столбца с содержимым. Это также включает пустые строки и иногда может быть немного сложнее, но обычно лучше, чем иметь дело с тысячами дополнительных строк.
Читайте также:  Соковыжималка panasonic mj l500ntq

Вам не нужно использовать With если вы используете только один оператор, хотя это не вызовет никаких проблем.

Я бы не Range.Formula использование Range.Formula и Range.FormulaR1C1 если у вас нет причин для этого.

Первая проблема — выбор ячеек. Для этого макрос должен выбрать ячейку, а затем определить адрес ячейки. Если вам действительно нужно выбрать ячейку, используйте Application.ScreenUpdating = False . Тогда макрос не должен показывать выбор курсора ячейки. Отбрасывание выбора и включение диапазона в строку кода назначения формулы, как показано ниже, увеличит скорость / эффективность.

Range("E2:E" & Cells(Rows.Count, "C").End(xlUp).Row) — это версия кода выбора последней ячейки в пустом столбце (строка 1048576), а затем с помощью нажатия клавиши ctrl и клавиша «вверх» для определения самой низкой / последней использованной ячейки. Это дает вам счетчик строк 1 каждый раз, так как столбец пуст. Так как вы ищете последний ряд. Это может быть быстрее отсчитывать сверху. Мой любимый метод для этого — цикл. Увеличивайте переменную в цикле, ища последнюю строку. Затем переменная может быть использована вместо вашей стратегии снизу вверх.

Точно так же, как TSQL, кавычки должны иметь свои кавычки

Вот результирующий код. Это заполнит диапазон, начиная с последней строки в Excel.

0 EKet [2011-08-24 00:51:00]

проблема

Мне нужно вставить некоторые формулы в двумерную область ячеек с VBA. Например, ниже

Конечно, я могу сделать это для 1 строки с VBA, используя.Formulas = "= Sum (. )"

но как я могу включить область вместо всего диапазона? Это кажется таким тривиальным, но я не могу понять это. Я пытаюсь избежать использования цикла для заполнения каждой строки.

Если возникнет потребность в определении какой из аргументов функции, процедуры является обязательным/необязательным, то сделать это будет довольно просто, т.к. после ввода имени функции на экране появится подсказка, где все не обязательные аргументы будут заключены в квадратные скобки (см. скриншоты)

Читайте также:  Beats urbeats 3 lightning

В случае, если подсказка не появится, Вы, после ввода имени, можете :
— использовать клавиши CTRL + I
— в меню Правка / Edit выбрать команду Сведения / Quick Info
— или в меню Сервис / Tools выбрать команду Параметры / Options , затем выделить закладку Редактор / Editor и установить "флажок" напротив Краткие сведения / Auto Quick Info и нажать кнопку OK (установка этой опции позволит, в дальнейшем, выводить на экран подсказку автоматически)

Ссылка на основную публикацию
Adblock
detector