是否与VBA中的Thread.Sleep()等效

Joh*_*lan 43 vba sleep access-vba

Thread.Sleep()在Access VBA中是否有相同的功能?

Otá*_*cio 62

Declare Sub Sleep Lib "kernel32" Alias "Sleep" _
(ByVal dwMilliseconds As Long)
Run Code Online (Sandbox Code Playgroud)

使用以下语法调用Sleep函数:

Sub Sleep()
Sleep 1000 'Implements a 1 second delay
End Sub 
Run Code Online (Sandbox Code Playgroud)

  • Declare 语句应该位于模块中,以避免“Declare 语句不允许作为对象的公共成员”错误。 (2认同)

Don*_*ett 8

不使用kernel32的另一种方法:

Dim started As Single: started = Timer

Do: DoEvents: Loop Until Timer - started >= 1
Run Code Online (Sandbox Code Playgroud)


小智 6

需要进行一些修改才能使代码生效.以下代码是更正后的版本.

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

Sub SleepVBA() 
Sleep 1000 'Implements a 1 second delay 
End Sub 
Run Code Online (Sandbox Code Playgroud)


小智 5

使Excel等待的所有其他方法导致Excel变得完全没有响应.使Excel等待同时确保响应式UI的解决方案是使用等待的秒数来调用此等待Sub.

    Sub Wait(seconds As Integer)
      Dim now As Long
      now = Timer()
      Do
          DoEvents
      Loop While (Timer < now + seconds)
    End Sub
Run Code Online (Sandbox Code Playgroud)