'module
Public Const ciIntervall As Integer = 10
Public Const dsMacro As String = "YourMacro"
Public gdNextTime As Double
Public gvar As Variant
Sub StartProcessing()
gdNextTime = Now + TimeSerial(0, 0, ciIntervall)
Application.OnTime _
gdNextTime, _
dsMacro
End Sub
Sub YourMacro()
'your code
Call StartProcessing
End Sub
Sub EndProcessing()
On Error Resume Next
Application.OnTime _
earliesttime:=gdNextTime, _
procedure:=dsMacro, _
schedule:=False
Application.Calculation = gvar
End Sub