Скажем, у нас есть следующая энергонезависимая UDF:
Function Twice(ByRef x As Double) As Double
Application.Volatile False
Twice = 2 * x
End Function
который вводим в ячейку A1
со ссылкой на ячейку A2
, т.е. в A1
ставим:
= Twice(A2)
Кроме того, в A2
ставим случайную функцию, т.е. в A2
ставим:
=RAND()
Теперь, если мы пересчитаем лист (скажем, нажав Shift + F9), значение в ячейке A2
изменится, но UDF не обновится, даже хотя его ссылка изменилась.
Как сделать, чтобы эта UDF обновлялась автоматически (т. е. без нажатия Ctrl+Alt+F9), когда ее опорное значение изменяется?
Application.Volatile False
, как предложил @pnuts, и установите автоматический расчет рабочей книги вместо ручного. - person Siddharth Rout   schedule 15.09.2015Application.Volatile False
— это то же самое, что указывать его, поскольку это настройка по умолчанию. Я просто поместил это здесь, чтобы быть явным в том, что я не хочу, чтобы функция была изменчивой. - person Confounded   schedule 15.09.2015Variant
. - person BrakNicku   schedule 15.09.2015Range
, чтобы он работал. Если вы передадитеA2+1
в качестве параметра, он не будет пересчитываться. Может кто найдет более универсальное решение. - person BrakNicku   schedule 15.09.2015Variant
, похоже, превращает некоторые функции в Volatile. Нужно копнуть глубже. - person Confounded   schedule 15.09.2015