1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Для того, чтобы программно пересчитать формулы, в т.ч. и 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 разработчики изменили принцип пересчёта, о чём, кстати, честно признались на своём сайте, и теперь, необходимо указывать все ячейки, иначе возникнет ошибка. |