Я знаю, что я делаю что-то не так. Я пытаюсь использовать функцию сна для задержки моего кода, но я получаю ошибку "Sub или Function not defined". Любые советы?
Спящий режим VBA не работает
Ответ 1
У VBA нет функции Sleep
.
Вы можете импортировать его из Kernel32.dll следующим образом:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Обратите внимание, что это заморозит приложение.
Вы также можете вызвать DoEvents
в цикле While
, который не будет заморозить приложение.
Ответ 2
Все, что я пробовал, похоже, повесил приложение, в том числе Application.Wait. Кажется, что это работает:
waitTill = Now() + TimeValue("00:15:00")
While Now() < waitTill
DoEvents
Wend
Ответ 3
Вы также можете приостановить текущий контекст макроса с помощью Application.Wait T
, который не будет блокировать весь процесс.
Ответ 4
Application.Wait DateAdd("m", 10, Now) ' Wait for 10 Minutes
Application.Wait DateAdd("s", 10, Now) ' wait for 10 seconds
Ответ 5
С этим кодом Excel не зависает, а загрузка процессора низкая:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Delay(s As Single)
Dim TimeOut As Single
TimeOut = Timer + s
Do While Timer < TimeOut
DoEvents
Sleep 1 'With this line the CPU usage is 00 instead of 50 with an absolute error of +1ms and the latency of 1ms.
Loop
End Sub
Ответ 6
Pausing an application for 10 seconds.
Application.Wait (Now + TimeValue("0:00:10"))