Уважаемы форумчане добрый день! Почему-то только сегодня обратил внимание, что мой Таймер неправильно отрабатывает команду. Мне нужно, чтобы сообщение выводилось на экран когда таймер покажет "0:00:00", а у меня команда отрабатывает когда таймер на экране отражает "0:00:01".
[vba]
Код
iTimer = iTimer - TimeValue("0:00:01") If iTimer > iTimer_2 Then Application.OnTime Now + TimeValue("00:00:01"), "TimerStart" Else MsgBox ("Время вышло"): Exit Sub End If
[/vba]
Уважаемы форумчане добрый день! Почему-то только сегодня обратил внимание, что мой Таймер неправильно отрабатывает команду. Мне нужно, чтобы сообщение выводилось на экран когда таймер покажет "0:00:00", а у меня команда отрабатывает когда таймер на экране отражает "0:00:01".
[vba]
Код
iTimer = iTimer - TimeValue("0:00:01") If iTimer > iTimer_2 Then Application.OnTime Now + TimeValue("00:00:01"), "TimerStart" Else MsgBox ("Время вышло"): Exit Sub End If
чутка переделал, как посчитал корректным (по моему мнению, конечно) [vba]
Код
Sub TimerStart() UserForm1.Label2.Caption = Format(iTimer, "h:nn:ss") 'Format(iTimer, "hh:nn:ss") 'ПРИМЕР 2 =========================================== If Not st Then Exit Sub
If Round(iTimer - iTimer_2, 10) > 0 Then 'Or iTimer = iTimer_2 iTimer = iTimer - TimeValue("0:00:01") 'TimeValue("0:00:01") Application.OnTime Now + TimeValue("00:00:01"), "TimerStart" Else Debug.Print iTimer > iTimer_2, iTimer * 1000 ' здесь может быть как True, так и False в зависимости от начального времени MsgBox ("Время вышло") Unload UserForm1 End If End Sub
[/vba]
это происходит из-за проблем точности
чутка переделал, как посчитал корректным (по моему мнению, конечно) [vba]
Код
Sub TimerStart() UserForm1.Label2.Caption = Format(iTimer, "h:nn:ss") 'Format(iTimer, "hh:nn:ss") 'ПРИМЕР 2 =========================================== If Not st Then Exit Sub
If Round(iTimer - iTimer_2, 10) > 0 Then 'Or iTimer = iTimer_2 iTimer = iTimer - TimeValue("0:00:01") 'TimeValue("0:00:01") Application.OnTime Now + TimeValue("00:00:01"), "TimerStart" Else Debug.Print iTimer > iTimer_2, iTimer * 1000 ' здесь может быть как True, так и False в зависимости от начального времени MsgBox ("Время вышло") Unload UserForm1 End If End Sub