Excel вычисляет формулу с функция VBA как ошибка, если она не вводится повторно

У меня есть простой оператор if, настроенный на листе, где условием if является функция, определяемая пользователем VBA:

Function CellIsFormula(ByRef rng)
    CellIsFormula = rng(1).HasFormula
End Function

Эта функция, кажется, работает нормально:

Evaluate 1 Evaluate 2

Но по какой-то причине это Я не могу понять, ячейка обрабатывает ошибку. Что еще хуже, при вычислении формулы excel приписывает ошибку шагу вычисления, который не приводит к ошибке:

Evaluate 4 Evaluate 5 Evaluate 6

В довершение ко всему, и что действительно поражает меня, так это то, что если я просто снова введу формулу или принудительно выполнить полный пересчет ( Ctrl + Alt + F9 ) - формулы вычисляются без проблем!

Re-Enter Formula Calculation worked

Я попытался составить формулу volatile, добавив Application.Volatile к коду функции, но это ничего не изменило. Другие методы для обновления вычислений, такие как установка вычисления вручную, а затем обратно в автоматический режим, скрытие «пересчета листа» или просто использование F9 или Ctrl + F9 не работают, только повторный ввод формулы или Ctrl + Alt + F9 приведет к правильному пересчету функции.

Изменение одного из ячейки, указанные в операторе if, не решают проблему, , но , изменение ячейки, на которую ссылается функция "CellIsFormula", не устраняет проблему. Однако каждый раз, когда лист открывается повторно, ошибка возвращается.

15
задан Hulk1991 24 July 2013 в 07:42
поделиться