2012-06-30 5 views

ответ

28

В дополнение к моим комментариям, вы можете использовать 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. Только для чтения.

+0

+1 хороший ответ Сид. – brettdj

+0

Это было точно, спасибо! –

+4

Я полагался на этот пример кода, поскольку он обычно предоставляется в Интернете, но он не работает. DoEvents будет _not_ блокировать до тех пор, пока вычисление не завершится и фактически будет no-op в вашем примере кода. – user65

0

Я использовал код, чтобы решить проблему, когда цикл вычисления блокирует часть пути. Я думал, что это может быть потому, что нужно было дождаться завершения полного вычисления, прежде чем вводить следующий набор значений. Когда я вставил код Application.Calculate, проблема решена. Петля теперь заканчивается.

Смежные вопросы