Функции ожидания и сна блокируют Excel, и вы не можете больше ничего делать, пока не закончится задержка. С другой стороны, задержки цикла не дают вам точного времени ожидания.
Итак, я сделал этот обходной путь, объединив немного обе концепции. Он зацикливается, пока не наступит нужное время.
Private Sub Waste10Sec()
target = (Now + TimeValue("0:00:10"))
Do
DoEvents 'keeps excel running other stuff
Loop Until Now >= target
End Sub
Вам просто нужно позвонить в Waste10Sec, где вам нужна задержка