我正在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