Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Работа Таймера - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа Таймера (Макросы/Sub)
Работа Таймера
A_3485 Дата: Среда, 26.10.2016, 10:35 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

Уважаемы форумчане добрый день!
Почему-то только сегодня обратил внимание, что мой Таймер неправильно отрабатывает команду. Мне нужно, чтобы сообщение выводилось на экран когда таймер покажет "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]
К сообщению приложен файл: 8406717.xls(52Kb)
 
Ответить
СообщениеУважаемы форумчане добрый день!
Почему-то только сегодня обратил внимание, что мой Таймер неправильно отрабатывает команду. Мне нужно, чтобы сообщение выводилось на экран когда таймер покажет "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]

Автор - A_3485
Дата добавления - 26.10.2016 в 10:35
KuklP Дата: Среда, 26.10.2016, 16:39 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

У мну нормально, по нолям кажет.
К сообщению приложен файл: 6080841.gif(10Kb)


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеУ мну нормально, по нолям кажет.

Автор - KuklP
Дата добавления - 26.10.2016 в 16:39
A_3485 Дата: Среда, 26.10.2016, 16:49 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

KuklP, ..а у меня нет. Причем если делаю пошаговою обработку, то когда программа доходит до строчки
[vba]
Код
If iTimer > iTimer_2 Then
[/vba] при этом iTimer = "0:00:00", программа почему-то перескакивает на [vba]
Код
Else:
[/vba], а должна выполнить строчку [vba]
Код
Application.OnTime Now + TimeValue("0:00:01"), "TimerStart"
[/vba]
К сообщению приложен файл: 0122289.gif(34Kb)


Сообщение отредактировал A_3485 - Среда, 26.10.2016, 17:19
 
Ответить
СообщениеKuklP, ..а у меня нет. Причем если делаю пошаговою обработку, то когда программа доходит до строчки
[vba]
Код
If iTimer > iTimer_2 Then
[/vba] при этом iTimer = "0:00:00", программа почему-то перескакивает на [vba]
Код
Else:
[/vba], а должна выполнить строчку [vba]
Код
Application.OnTime Now + TimeValue("0:00:01"), "TimerStart"
[/vba]

Автор - A_3485
Дата добавления - 26.10.2016 в 16:49
KuklP Дата: Среда, 26.10.2016, 21:03 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

Не знаю. Давайте подождем, мож еще кто из форумчан у себя проверит. А что за Офис у Вас? Часом не Office 365?


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНе знаю. Давайте подождем, мож еще кто из форумчан у себя проверит. А что за Офис у Вас? Часом не Office 365?

Автор - KuklP
Дата добавления - 26.10.2016 в 21:03
Саня Дата: Среда, 26.10.2016, 22:51 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 1017
Репутация: 501 ±
Замечаний: 0% ±

XL 2010
это происходит из-за проблем точности

чутка переделал, как посчитал корректным (по моему мнению, конечно)
[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
[/vba]

Автор - Саня
Дата добавления - 26.10.2016 в 22:51
A_3485 Дата: Четверг, 27.10.2016, 09:07 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 130
Репутация: 0 ±
Замечаний: 40% ±

Всем спасибо за участие. Программа отработала, когда поставил условие >=:
[vba]
Код
If Round(iTimer - iTimer_2, 10) >= 0 Then
[/vba]
 
Ответить
СообщениеВсем спасибо за участие. Программа отработала, когда поставил условие >=:
[vba]
Код
If Round(iTimer - iTimer_2, 10) >= 0 Then
[/vba]

Автор - A_3485
Дата добавления - 27.10.2016 в 09:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Работа Таймера (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!