Страницы: 1
RSS
Таймер. Добавить секунды.
 
Код таймера не мой, помог один хороший человек.Таймер хороший но он сделан на минуты ,а сейчас возникла потребность в секундах.Как переделать можно?  
То есть на листе "main" в ячейке "C7" вводится время в минутах, а нужно в секундах.    
 
   Public dTime5min As Date  
   Public dTime5sec As Date  
   Public bTimeTick As Boolean  
   Public dTimeTick As Date  
         
   Sub Timer5min()  
   Dim h As Integer, m As Integer  
   Dim bCont As Boolean  
   Dim dt As Date  
   Dim min As Integer  
   Dim lot As Integer  
   Dim lot_s As Integer  
   On Error Resume Next  
   Application.OnTime EarliestTime:=dTime5sec, Procedure:="Timer5sec", Schedule:=False  
   On Error GoTo 0  
   t = Worksheets("main").Range("C7")  
   tt = IIf(t < 10, "0" & t & "", Range("C7"))  
   dTime5min = Now + TimeValue("00:" & tt & ":00")  
   dTime5min = dTime5min - TimeValue("00:00:" & (Second(dTime5min)))  
   min = Minute(dTime5min)  
   min = min - Int(min / t) * t  
   dTime5min = dTime5min - TimeValue("00:" & (min) & ":00")  
   Application.OnTime dTime5min, "Timer5min"  
   Call avto  
End Sub  
   Sub MyTimerOff()  
   On Error Resume Next  
   Application.OnTime EarliestTime:=dTime5min, Procedure:="Timer5min", Schedule:=False  
   'Application.OnTime EarliestTime:=dTime5sec, Procedure:="Timer5sec", Schedule:=False  
   On Error GoTo 0  
   End Sub  
   Public Sub btnStopTimer()  
   Call MyTimerOff  
   MsgBox "5min timer is stoped now. Use ""Recovery"" button to restart it"  
   End Sub  
   Public Sub btnStartTimer(Optional bShowMsg As Boolean = True)  
   Call MyTimerOff 'сброс предыдущих таймеров если таковые были  
   Dim min As Integer  
   Dim t As Integer  
   min = Minute(Now)  
   'определяем через сколько минут запустить  
   t = Worksheets("main").Range("C7")  
   min = min - t * Int(min / t)  
   dTime5min = Now + TimeValue("00:0" & Trim(CStr(1 - min)) & ":00")  
   'обнуляем секунды  
   Dim sec As Integer  
   sec = Second(dTime5min)  
   dTime5min = dTime5min - TimeValue("00:00:" & CStr(sec))  
   'запускаем таймер  
   Application.OnTime dTime5min, "Timer5min"  
   'сообщение о запуске  
   If bShowMsg = True Then  
   MsgBox "Запущен таймер, обновление каждые " & t & " мин."  
   End If  
   'первый запуск процедуры  
   Call avto  
   End Sub  
     
  Public Sub start()  
  Call btnStartTimer(True) 'true - покзывать сообщение о запуске, false -не показывать  
  End Sub
 
вы полагаете, что изучать чужой макрос, да еще и с пятью связанными процедурами - оч. интересно?  
 
задача какая?  
что-то у меня подозрение, что не надо столько много кода...
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
В книге есть макрос "avto", на который в случае  необходимости включается таймер с заданным промежутком времени. И после включения таймера, на пример с временем 20 секунд, макрос будет запускаться каждые 20 секунд.
 
ikki пытался намекнуть Вам, что нужен пример в виде файла(в соответствии с правилами < 100kb).
Я сам - дурнее всякого примера! ...
 
Stalevar, а зачем вообще вам таймер? Если для того, чтобы отслеживать появление новых данных в книге Excel - так для этого есть более простые и надёжные способы (например, отслеживание пересчёта формулы) У меня на сайте есть примеры использования таймеров:  
 http://excelvba.ru/programmes/StopWatch  
 http://excelvba.ru/programmes/Timer
 
Спасибо.  
Там нужно обновлять вэб данные.  
Вот с примером по проще:
 
А зачем что-то мудрить с какими-то таймерами, если можно просто задать период обновления данных веб-запроса?  
 http://ExcelVBA.ru/pictures/20120227-30h-50kb.jpg
 
привет, лучше было бы указывать ссылку на предыдущий топик, чтоб понятно было откуда ноги растут, а то так сразу не понятно в чем вопрос.    
 
Поправил макрос, теперь таймер по секундам.
 
СПАСИБО.
Страницы: 1
Читают тему
Наверх