如何在午夜运行的 vba 上编程计时器



我正在VBA上编写一个进程,为此我使用了一个基本的计时器。

dim t as single
T=timer 
(code...)
Range("A1") = Timer - t & " secs"

我的计时器应该能够在午夜后继续运行。但是我读到计时器在 24:00 休息。是否可以设置一个不受午夜通道影响的计时器?

感谢您的帮助!

您将需要日期和时间

使用以下变量将函数设置为在午夜运行:

调暗开始日期将开始时间调暗为双倍

将当前日期调暗为只要将当前时间调暗为双倍

将 dblStartDateTime 调暗为双精度将 dbl 当前日期时间调暗为双精度将 dblElapsedDateTime 调暗为双精度

开始日期 = 日期开始时间 = VBA。定时器

dbl开始日期时间 = 开始日期 + (开始时间/24/3600(

您会注意到dblStartDateTime看起来很像您从VBA返回的正常DateTime。Now(( - 但它具有 VBA 的精度。Timer(( 函数与四舍五入到秒的 VBA 不同。日期时间功能。

你的代码可能类似于检查某个事件(出现在文件夹中的文件?(的循环,或者当数据从冗长的计算中返回时,函数是正确的:

对于 i = 1 到 16777216

    睡眠 10    ' boolAAAAAGGGHHHH = HasGreatCthulhuEmergedFromTheDeep((    ' 如果 boolAAAAAGGGHHHH = true,则退出    '下一页 i

因此,您现在需要做的就是在循环中插入一段类似的代码,以检查当前日期和时间,并计算经过的间隔:

      

    当前日期 = 日期    当前时间 = VBA。定时器

    dbl当前日期时间 = 当前日期 + (当前时间/24/3600(

    dblElapsedDateTime = dblCurrentDateTime - dblStartDateTime

    如果 dbl已过日期时间> dbl超时,则        ' 错误提高 -1951535091, "XL 末日手表应用程序", "凡人将再活一天"        退出        结束如果

。这是一个很晚的答案,但这是一个相当普遍的问题。

如果你想

做一个时差,你可以做这样的事情。 您需要什么分辨率?如果你使用日期变量,我相信你对第二个很好。

Sub test()
Dim startdatetime As Date
startdatetime = Now()
' wait 7 seconds (or whatever your code does...)
Application.Wait (Now + 0.00008)
Debug.Print Format(Now() - startdatetime, "s.000")
End Sub

最新更新