VBA сон не работает - PullRequest
       19

VBA сон не работает

14 голосов
/ 29 апреля 2010

Я знаю, что здесь что-то не так. Я пытаюсь использовать функцию сна для задержки моего кода, но я получаю сообщение об ошибке «Sub или Function notfined». Любые советы?

Ответы [ 5 ]

19 голосов
/ 29 апреля 2010

VBA не имеет функции Sleep.

Вы можете импортировать его из Kernel32.dll следующим образом:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Обратите внимание, что это приведет к зависанию приложения.
Вы также можете вызвать DoEvents в цикле While, который не остановит приложение.

9 голосов
/ 29 июня 2012

Кажется, все, что я пробовал, зависает в приложении, включая Application.Wait. Это, кажется, работает, хотя:

waitTill = Now() + TimeValue("00:15:00")

While Now() < waitTill
    DoEvents
Wend
8 голосов
/ 29 апреля 2010

Вы также можете приостановить текущий контекст макроса с помощью Application.Wait T, который не заблокирует весь процесс.

4 голосов
/ 20 февраля 2013
Application.Wait DateAdd("m", 10, Now) ' Wait for 10 Minutes
 Application.Wait DateAdd("s", 10, Now) ' wait for 10 seconds
0 голосов
/ 20 мая 2018

С этим кодом 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
...