0

我想在我的 VB 脚本代码中的两个连续行之间引入 3 小时的延迟。

我为此使用以下代码片段:

WScript.Sleep 10800000

但我认为代码停止了很长时间,远远超过 3 个小时。我使用了 10800000,因为我读取的时间以毫秒为单位。

请让我知道我的错误以及实现此目的的正确方法。谢谢你!

4

2 回答 2

2

尝试这样的事情:

timeout = DateAdd("h", 3, Now)
Do Until Now > timeout
  WScript.Sleep 200
Loop
于 2013-10-23T08:50:43.030 回答
1

重要提供此解决方案是因为问题一开始就被标记为

我会给你不同的选择。我想你现在有这样的事情:

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.

于 2013-10-22T12:25:52.720 回答