Hi Dave_ross
Try this code in you workbook
Option Explicit
Dim iTimer As Date
Dim zTimer As Date
Dim xCount As Date
Dim iCount As Date
Dim eTime As Date
Dim XCell As Range
Dim iBoolean As Boolean
Dim iiBoolean As Boolean
Dim iiiBoolean As Boolean
Sub start_timers()
With ThisWorkbook.Sheets(1)
.Range("C3") = TimeValue("00:00:10")
.Range("E3") = TimeValue("00:00:10")
.Range("G3") = TimeValue("00:01:50")
.Range("G10") = ""
.Range("C10") = "Started"
End With
iBoolean = True
iiBoolean = True
iiiBoolean = True
MasterTimer
End Sub
Sub MasterTimer()
If iBoolean Then
xCount = TimeValue("00:00:10")
Set XCell = ThisWorkbook.Sheets(1).Range("C3")
eTime = TimeValue("00:00:10")
iCount = TimeValue("00:00:01")
iBoolean = False
UpdateiTimer
STimer
ElseIf iiBoolean Then
xCount = TimeValue("00:00:10")
iCount = TimeValue("00:00:01")
Set XCell = ThisWorkbook.Sheets(1).Range("E3")
eTime = TimeValue("00:00:10")
iiBoolean = False
UpdateiTimer
STimer
ElseIf iiiBoolean Then
xCount = TimeValue("00:01:50")
iCount = TimeValue("00:00:01")
Set XCell = ThisWorkbook.Sheets(1).Range("G3")
eTime = TimeValue("00:01:50")
iiiBoolean = False
UpdateiTimer
STimer
Else
KillTimers
End If
End Sub
Sub UpdateiTimer()
XCell = xCount
iTimer = Now + TimeValue("00:00:01")
xCount = xCount - iCount
Application.OnTime iTimer, "UpdateiTimer"
End Sub
Sub STimer()
zTimer = Now + eTime
Application.OnTime zTimer, "StopTimers"
End Sub
Sub StopTimers()
On Error Resume Next
Application.OnTime iTimer, "UpdateiTimer", , False
Application.OnTime zTimer, "STimer", , False
MasterTimer
End Sub
Sub KillTimers()
On Error Resume Next
Set XCell = Nothing
Application.OnTime iTimer, "UpdateiTimer", , False
Application.OnTime zTimer, "STimer", , False
ThisWorkbook.Sheets(1).Range("G10") = "Stopped"
ThisWorkbook.Sheets(1).Range("C10") = ""
End Sub
but dont forget to put
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call KillTimers
End Sub
in "Thisworkbook" Module
Bookmarks