Подтвердить что ты не робот

Дождитесь завершения Application.Calculate

Могу ли я заставить vba script ждать, пока Application.Calculate завершит пересчет всех формул?

4b9b3361

Ответ 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, проблема решена. Теперь цикл завершается.