Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2013, 14:40   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Несколько вопросов по таймеру обратного отсчета

Добрый день, уважаемые форумчане!
Имеется макрос, срабатывающий автоматически каждые 20 минут:
Код:
Sub myMacro()
Application.OnTime Now() + TimeSerial(0, 20, 0), "myMacro"
'моя процедура
Call StartTimer
End Sub
Для визуального контроля за оставшимся временем до очередного срабатывания в статусбаре идет обратный отсчет. Для этого запускается макрос StartTimer (спасибо IgorGO):
Код:
Dim MyTimer As Integer

Sub StartTimer()
  ShowBackTimer 1100
End Sub

Sub ShowBackTimer(tm As Integer)
 MyTimer = tm
 Application.StatusBar = "Осталось  около  " & Format(MyTimer, "0#") & "    секунд"
 Application.OnTime Now + TimeValue("00:00:01"), "CloseMyMsgBox"
End Sub

Sub CloseMyMsgBox()
 MyTimer = MyTimer - 1
 Application.StatusBar = "Осталось  около  " & Format(MyTimer, "0#") & "    секунд"
 If MyTimer <= 0 Then
  Application.StatusBar = False
 Else
  Application.OnTime Now + TimeValue("00:00:01"), "CloseMyMsgBox"
 End If
End Sub
Длительность самой процедуры практически всегда разная. Поэтому обратный отсчет начинается со 1100 секунд и указывается "около".
Вопрос 1: Чего-то не получается подобрать формат отображения времени, чтобы отображалось не количество оставшихся секунд, а был формат чч:мм. И какое значение тогда указывать строке:
Код:
ShowBackTimer 1100
Вопрос 2: Правильно ли я понимаю, что если за период между срабатываниями по таймеру, запускаются другие макросы, то таймер останавливается и продолжает отсчет после их завершения? Визуально получается именно так.
Вопрос 3: Как можно реализовать ситуацию, когда, скажем, за две минуты до конца отсчета выскакивало предупреждение о том, что необходимо завершить все текущие операции с файлом и перейти в режим ожидания срабатывания дабы избежать конфликтов срабатывания разных макросов или даже просто выйти из режима редактирования ячейки?
Заранее спасибо!
strannick вне форума Ответить с цитированием
Старый 23.02.2013, 17:38   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

А зачем два отдельных таймера?
ИМХО лучше сделать один таймер, который срабатывает каждую секунду и выводит оставшееся время в статусбар. Если осталось 2 мин., выводит сообщение. А если осталось 0, запускает процедуру.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.02.2013, 20:54   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
А зачем два отдельных таймера?
ИМХО лучше сделать один таймер, который срабатывает каждую секунду и выводит оставшееся время в статусбар. Если осталось 2 мин., выводит сообщение. А если осталось 0, запускает процедуру.
Так я и не хочу два отдельных таймера. Просто думал в существующий добавить такое предупреждение. Или я не правильно понял?
strannick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с таймером обратного отсчета nursak Помощь студентам 10 05.06.2011 17:58
Счетчик обратного отсчета! YuZi_2009 PHP 3 11.02.2011 14:50
Таймер обратного отсчета kpachbiu JavaScript, Ajax 4 09.01.2011 15:32
Таймер обратного отсчета Bilargo Помощь студентам 6 30.09.2009 17:02
Таймер обратного отсчета на С Raptor Помощь студентам 6 08.01.2008 01:11