我想在我的 VB 脚本代码中的两个连续行之间引入 3 小时的延迟。
我为此使用以下代码片段:
WScript.Sleep 10800000
但我认为代码停止了很长时间,远远超过 3 个小时。我使用了 10800000,因为我读取的时间以毫秒为单位。
请让我知道我的错误以及实现此目的的正确方法。谢谢你!
尝试这样的事情:
timeout = DateAdd("h", 3, Now)
Do Until Now > timeout
WScript.Sleep 200
Loop
重要提供此解决方案是因为问题一开始就被标记为excel-vba。
我会给你不同的选择。我想你现在有这样的事情:
Sub MyCurrentSub()
Dim A
A = 10
'wait 3 hour here and...
'...after 3 hours do other part of the sub
MsbBox A
End Sub
在等待期间,即使您使用不同的选项等待(例如Do...Loop
),您的 Excel 应用程序也会受到限制,至少部分不会像往常一样工作。
我会以这种方式通过在正确的时刻创建和调用不同的 Sub 来做到这一点:
Public A
Sub MyNewSub_1()
A = 10
Appication.OnTime Now + TimeValue("03:00:00"), "MyNewSub_2"
End Sub
'now you can use your Excel as usually...
Sub MyNewSub_2()
MsgBox A
End Sub
您将得到相同的结果,Excell 将在等待期间免费供您使用 3 小时。您需要记住的唯一想法是不要退出应用程序。如果您退出 Excel,它将“忘记”调用MyNewSub_2
.