2014-09-19 4 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 's"의 정신 빼기). Timer & Now는 독점적으로 사용되었지만 후자의 경우에는 항상 일관된 3 초 결과를 보였습니다. 그래서 Timer의 정확성에 대해 궁금해하게합니다. – DaveU