Код таймера не мой, помог один хороший человек.Таймер хороший но он сделан на минуты ,а сейчас возникла потребность в секундах.Как переделать можно?
То есть на листе "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
То есть на листе "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