У меня есть простой оператор if, настроенный на листе, где условием if является функция, определяемая пользователем VBA:
Function CellIsFormula(ByRef rng)
CellIsFormula = rng(1).HasFormula
End Function
Эта функция, кажется, работает нормально:
Но по какой-то причине это Я не могу понять, ячейка обрабатывает ошибку. Что еще хуже, при вычислении формулы excel приписывает ошибку шагу вычисления, который не приводит к ошибке:
В довершение ко всему, и что действительно поражает меня, так это то, что если я просто снова введу формулу или принудительно выполнить полный пересчет ( Ctrl + Alt + F9 ) - формулы вычисляются без проблем!
Я попытался составить формулу volatile, добавив Application.Volatile
к коду функции, но это ничего не изменило. Другие методы для обновления вычислений, такие как установка вычисления вручную, а затем обратно в автоматический режим, скрытие «пересчета листа» или просто использование F9 или Ctrl + F9 не работают, только повторный ввод формулы или Ctrl + Alt + F9 приведет к правильному пересчету функции.
Изменение одного из ячейки, указанные в операторе if, не решают проблему, , но , изменение ячейки, на которую ссылается функция "CellIsFormula", не устраняет проблему. Однако каждый раз, когда лист открывается повторно, ошибка возвращается.