Application.Volatile - это трюк интерпретатора vba, который работает только тогда, когда вызов размещается непосредственно после определения метода, после этого Application.Calculate также должен переоценить функцию
Public Function FooMethod()
Application.Volatile true
как говорится в справке ...
Помечает пользовательскую функцию как энергозависимую. Энергозависимая функция должна пересчитываться всякий раз, когда вычисление происходит в любых ячейках на рабочем листе. Энергонезависимая функция пересчитывается только при изменении входных переменных. Этот метод не имеет никакого эффекта, если он не находится внутри определенной пользователем функции, используемой для вычисления ячейки листа