如何暂停特定的时间? (Excel中/ VBA)

我有一个Excel工作表具有以下macros。 我想循环它,但是如果我能find这个function的话,它就会跳起来。 这不可能吗?

Sub Macro1() ' ' Macro1 Macro ' Do Calculate 'Here I want to wait for one second Loop End Sub 

使用Wait方法 :

 Application.Wait Now + #0:00:01# 

或(对于Excel 2010及更高版本):

 Application.Wait Now + #12:00:01 AM# 

将其添加到您的模块

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

或者,对于64位系统使用:

 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 

像这样在你的macros中调用它:

 Sub Macro1() ' ' Macro1 Macro ' Do Calculate Sleep (1000) ' delay 1 second Loop End Sub 

而不是使用:

 Application.Wait(Now + #0:00:01#) 

我更喜欢:

 Application.Wait(Now + TimeValue("00:00:01")) 

因为事后阅读要容易得多。

这对我来说是完美无瑕的。 在“do until”循环之前或之后插入任何代码。 在你的情况下,把5行(time1 =&time2 =&“do until”循环)放在do循环的最后

 sub whatever() Dim time1, time2 time1 = Now time2 = Now + TimeValue("0:00:01") Do Until time1 >= time2 DoEvents time1 = Now() Loop End sub 

kernel32.dll中的Sleep声明在64位Excel中不起作用。 这将是更一般的一点:

 #如果VBA7那么 

    公共声明PtrSafe子睡眠库“kernel32”(ByVal dwMilliseconds As LongPtr) 

 #其他 

     Public Declare Sub Sleep Lib“kernel32”(ByVal dwMilliseconds as Long) 

 #万一 

只是一个清理版本的clemo代码 – 在Access中工作,没有Application.Wait函数。

 Public Sub Pause(sngSecs As Single) Dim sngEnd As Single sngEnd = Timer + sngSecs While Timer < sngEnd DoEvents Wend End Sub Public Sub TestPause() Pause 1 MsgBox "done" End Sub 

Application.Wait Second(Now) + 1

 Function Delay(ByVal T As Integer) 'Function can be used to introduce a delay of up to 99 seconds 'Call Function ex: Delay 2 {introduces a 2 second delay before execution of code resumes} strT = Mid((100 + T), 2, 2) strSecsDelay = "00:00:" & strT Application.Wait (Now + TimeValue(strSecsDelay)) End Function 

尝试这个 :

 Threading.thread.sleep(1000) 

我有这个回答这个问题:

 Sub goTIMER(NumOfSeconds As Long) 'in (seconds) as: call gotimer (1) 'seconds Application.Wait now + NumOfSeconds / 86400# 'Application.Wait (Now + TimeValue("0:00:05")) 'other Application.EnableEvents = True 'EVENTS End Sub 

我通常使用计时器function来暂停应用程序。 将此代码插入你的

 T0 = Timer Do Delay = Timer - T0 Loop Until Delay = 1 'Change this value to pause time for certain amount of seconds