2014-09-19 99 views
0

当我运行下面的代码(test1),我得到不同的结果,几乎总是在2.5秒左右 - 很少是3秒。如果电脑被别的东西占用,我可以理解它高于3秒,但少于3秒是没有意义的。我已经用xl2003和xl2010尝试过了,结果相似。我希望有人能向我解释这一点。Application.Ontime给出不准确的结果

Option Explicit 

Dim t As Double 

Sub test1() 
    Debug.Print Now 
    Application.OnTime Now + TimeValue("00:00:03"), "test2", , True 
    ' t = Timer 
End Sub 

Sub test2() 
    Debug.Print Now 
    ' Debug.Print Timer - t 
End Sub 
+0

我改变了我的代码,现在我似乎得到了准确的结果。也许Timer之前造成了不一致。 – DaveU 2014-09-19 23:58:26

回答

0

Now()Timer似乎异步更新它们的值。在一些快速测试中,我得到约0到1秒的差异。

正如你发现你应该坚持一个时间源。另外,OnTime只能以1秒的增量进行安排。

+0

对不起,我的评论并不清楚。在我的第一篇文章中,我独家使用了Timer,并获得了不同的结果。在编辑过的代码中,我已经注释了计时器行,现在正在使用Now来获取流逝的时间(通过对2“Now”进行精神减法)。所以Timer&Now是专门用于 - 但后者我总是有一致的3秒结果。这导致我想知道Timer的准确性。 – DaveU 2014-09-20 01:51:20