首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA中的计时延迟

VBA中的计时延迟
EN

Stack Overflow用户
提问于 2011-08-06 01:43:07
回答 13查看 220.4K关注 0票数 18

我希望我的代码有1秒的延迟。下面是我试图延迟的代码。我认为它会轮询操作系统上的日期和时间,然后等待时间匹配。我对延迟有意见。我认为当它与等待时间匹配时,它不会轮询时间,它只是坐在那里并冻结。我运行代码时,它只冻结了大约5%的时间。我想知道Application.Wait是否有办法检查轮询时间是否大于等待时间。

代码语言:javascript
复制
   newHour = Hour(Now())
   newMinute = Minute(Now())
   newSecond = Second(Now()) + 1
   waitTime = TimeSerial(newHour, newMinute, newSecond)
   Application.Wait waitTime
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2011-08-06 02:07:53

我将这个小函数用于VBA。

代码语言:javascript
复制
Public Function Pause(NumberOfSeconds As Variant)
    On Error GoTo Error_GoTo

    Dim PauseTime As Variant
    Dim Start As Variant
    Dim Elapsed As Variant

    PauseTime = NumberOfSeconds
    Start = Timer
    Elapsed = 0
    Do While Timer < Start + PauseTime
        Elapsed = Elapsed + 1
        If Timer = 0 Then
            ' Crossing midnight
            PauseTime = PauseTime - Elapsed
            Start = 0
            Elapsed = 0
        End If
        DoEvents
    Loop

Exit_GoTo:
    On Error GoTo 0
    Exit Function
Error_GoTo:
    Debug.Print Err.Number, Err.Description, Erl
    GoTo Exit_GoTo
End Function
票数 25
EN

Stack Overflow用户

发布于 2011-09-26 09:00:43

如果您使用的是Excel VBA,则可以使用以下命令。

代码语言:javascript
复制
Application.Wait(Now + TimeValue("0:00:01"))

(时间字符串应类似于H:MM:SS。)

票数 38
EN

Stack Overflow用户

发布于 2011-08-06 02:25:25

您可以在模块中复制以下代码:

代码语言:javascript
复制
Sub WaitFor(NumOfSeconds As Long)
Dim SngSec as Long
SngSec=Timer + NumOfSeconds

Do while timer < sngsec
DoEvents
Loop

End sub

每当您想要应用暂停写入时:

代码语言:javascript
复制
Call WaitFor(1)

我希望这对你有帮助!

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6960434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档