У меня есть энергонезависимая функция UDF в VBA, которая требует инициализации глобальной переменной (обратного вызова VSTO).
Эта функция находится в xla или xlam (то же поведение)
Можно ли отменить расчет формулы, если переменная еще не доступна?
В режиме автоматического пересчета Excel (я не хочу его менять) Excel пересчитывает ячейки с моей функцией каждый раз, когда я открываю книгу, заменяя значение, сохраненное в ячейке, ошибкой: «#ARG!».
Я знаю, как вернуть пустую ячейку, если моя переменная не инициализирована, но возможно ли вернуть исходное значение? Я проверил с помощью отладчика, что он был сохранен в книге. Попытка вернуть Application.Caller.Value2
вызывает циклическую ссылку.
Кроме того, функция не вызывается (ожидаемое поведение), если код VBA встроен в рабочую книгу (xlsm) или если рабочая книга имеет формат xls. Однако преобразование рабочей книги в xlsx приводит к пересчету ячеек после открытия рабочей книги, как описано.