У меня есть UDF Test(rng as range)
, и я хочу сделать что-то вроде этого:Введите формулу UDF в диапазоне с помощью VBA
Dim rng2 as Range
Set rng2 = blah blah
rng2.formula = "=test(rng)"
Как я могу это сделать?
У меня есть UDF Test(rng as range)
, и я хочу сделать что-то вроде этого:Введите формулу UDF в диапазоне с помощью VBA
Dim rng2 as Range
Set rng2 = blah blah
rng2.formula = "=test(rng)"
Как я могу это сделать?
Что делать, если rng
находится на другом листе? Тогда вам нужно это:
rng2.Formula = "=test('" & rng.Parent.Name & "'!" & rng.Address & ")"
Вы должны указать адрес диапазона т.е:
rng2.formula = "=test(" & rng.address & ")"
Я пробовал это, и я получил # имя? ошибка. – Ilias
диапазон адресов должен быть принят в качестве переменной, а не строку:
Dim rng2 as Range
Set rng2 = blah blah
rng2.formula = "=test(" & rng.Address & ")"
Вот что мне нужно. – Ilias
Я бы выбрал именно этот ответ. –
Просто наблюдение: если OP хочет вставить функцию через код, возможно, он не ссылается на какой-либо «ActiveSheet» в частности. Я бы удалил 'If' check и просто обратился к родительским именам как' rng' (input), так и 'rng2' (output). –
@MatteoNNZ не будет никакой точкой для 'rng2', поскольку мы имеем дело с объектом напрямую - согласились, что нет необходимости в проверке« ActiveSheet », поскольку адрес будет по-прежнему работать с именем листа, даже если он находится на том же листе поэтому можно свести к одному оператору 'IIf()'. Будет обновляться, когда я вернусь к компьютеру! –