我想在我的VB脚本代码中的两个连续行之间引入3小时的延迟。
我正在使用以下代码段:
WScript.Sleep 10800000
但我认为代码停止了很长时间,超过3个小时。我使用10800000,因为我的读取时间以毫秒为单位。
请让我知道我的错误以及实现这一目标的正确方法。 谢谢!
答案 0 :(得分:2)
尝试这样的事情:
timeout = DateAdd("h", 3, Now)
Do Until Now > timeout
WScript.Sleep 200
Loop
答案 1 :(得分:1)
重要提供此解决方案是因为问题在开头标记为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
。