Для того, чтобы программно пересчитать формулы, в т.ч. и volatile - пользовательские функции, можно использовать метод Calculate, который позволяет пересчитывать формулы:
во всех открытых рабочих книгах
в нужном рабочем листе
только в определённом диапазоне
Calculate 'Application.Calculate
Worksheets(1).Calculate 'Workbooks(...).Worksheets(...)
Range("A1:C3").Calculate 'Workbooks(...).Worksheets(...).Range(...)
Для пересчёта же всех формул, включая все пользовательские (собственные) функции, нужно использовать комбинацию клавиш CTRL + ALT + F9, т.е.
Application.SendKeys "^%{F9}" 'SendKeys "^%{F9}"
Актуально только для MS Excel 2000, XP
В этой версии, вместо имитации нажатия горячих клавиш, можно использовать
Application.CalculateFull
Вычисление формул массива : Если формула массива введена в одну единственную ячейку, то её вычисление ничем не отличается от вычисления обычной формулы, т.е. Range("A1").Calculate Если же она введена в несколько ячеек, допустим A1:C1 , то в версиях 95, 97, 2000 для пересчёта всех ячеек можно указать как все ячейки, содержащие эту формулу, т.е. Range("A1:C1").Calculate так и только часть ячеек, например, Range("A1").Calculate или Range("C1:C3").Calculate
Однако, уже в MS Excel XP разработчики изменили принцип пересчёта, о чём, кстати, честно признались на своём сайте, и теперь, необходимо указывать все ячейки, иначе возникнет ошибка.