Вы можете использовать элемент управления Timer для этого, но вы не сможете напрямую установить интервал на 7200000. Вы можете установить интервал на 60000 (и установить для свойства Enabled значение True
) и иметь переменную, которая подсчитываетПрошедшие минуты:
Dim iMinutesElapsed As Integer
Private Sub Timer1_Timer()
iMinutesElapsed = iMinutesElapsed + 1
If iMinutesElapsed = 120 Then
DoAlarm
iMinutesElapsed = 0
End If
End Sub
Private Sub DoAlarm()
MsgBox "2 hours have gone by."
End Sub
Лучше всего сохранить переменную со значением функции Timer и проверить, сколько времени прошло с тех пор, как вы вызвали Start
. При таком подходе установите Интервал Timer1 равным 1000 и Enabled в False, метод Start
включит Timer1 для вас:
Dim sngStart As Single
Public Sub Start()
sngStart = Timer
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim sngElapsedTime As Single
sngElapsedTime = Timer - sngStart
If sngElapsedTime < 0 Then
' Clock passed midnight
sngElapsedTime = (86400 - sngStart) + Timer
End If
If sngElapsedTime > 7200 Then ' counting seconds with this code
sngStart = Timer ' Restart
DoAlarm
End If
End Sub
Наконец, решение, которое будет запускаться каждый нечетный час на минуте 30, как описанов комментариях:
Private Sub Timer1_Timer()
If Hour(Now) Mod 2 = 1 And Minute(Now) = 30 Then
DoAlarm
End If
End Sub