Могу ли я заставить vba script ждать, пока Application.Calculate завершит пересчет всех формул?
Дождитесь завершения Application.Calculate
Ответ 1
В дополнение к моим комментариям вы можете использовать DoEvents с Application.CalculationState
. См. Этот пример
Application.Calculate
If Not Application.CalculationState = xlDone Then
DoEvents
End If
'~~> Rest of the code.
Если вы хотите, вы также можете использовать Do While Loop
для проверки Application.CalculationState
Я бы также рекомендовал эту ссылку
Тема: свойство Application.CalculationState
Ссылка: http://msdn.microsoft.com/en-us/library/bb220901%28v=office.12%29.aspx
Цитата из выше ссылки
Возвращает константу XlCalculationState, которая указывает состояние вычисления приложения, для любых вычислений, которые выполняются в Microsoft Excel. Только для чтения.
Ответ 2
Я использовал код для решения проблемы, когда цикл вычисления блокируется частично. Я думал, что это может быть потому, что нужно было дождаться завершения полного вычисления, прежде чем вводить следующий набор значений. Когда я вставил код Application.Calculate, проблема решена. Теперь цикл завершается.