2014-09-19 6 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

Я изменил свой код, и теперь я, кажется, получаю точные результаты. Может быть, Таймер был причиной несогласованности раньше. – DaveU

ответ

0

Now() и Timer кажется, обновляют свои значения асинхронно. В некоторых быстрых тестах я получаю дисперсию в диапазоне от 0 до 1 секунды.

Как вы обнаружили, вы должны придерживаться одного источника времени. В стороне, OnTime можно планировать только с шагом в 1 секунду.

+0

Извините, в моем комментарии не было ясно. В моем первоначальном посте я использовал Timer исключительно и получал разнообразные результаты. В отредактированном коде я прокомментировал строки Timer, и теперь я использую Now, чтобы получить прошедшее время (сделав психическое вычитание 2 «Now»). Поэтому Timer & Now использовался исключительно, но с последним я всегда имел последовательные результаты за 3 секунды. Это заставляет меня задаться вопросом о точности таймера. – DaveU

Смежные вопросы