У меня есть простая инструкция 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, устранит проблему. Каждый раз, когда лист снова открывается, ошибка возвращается.