Ответ 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. Только для чтения.