You provided no code for stopping the proc from rescheduling itself.
To end an OnTime event, you must provide it the EXACT time that it is
scheduled to run. Since you use Now+TimeValue(), you have no way of
getting the scheduled run time. Instead, you should save the time
value in a module-scoped variable and pass the value of that variable
to OnTime. E.g.
Dim RunWhen As Double
Sub my_Procedure()
' your code here
RunWhen = Now + TimeSerial(0,0,30)
application.ontime EarliestTime:=RunWhen, _
Procedu="my_Procedure"
End Sub
Sub StopOnTime
Application.OnTime earliesttime:=RunWhen, _
procedu="my_Procedure", schedule:=False
End Sub
See
www.cpearson.com/Excel/OnTime.aspx for more detail about working
with OnTime and Windows timers.
Cordially,
Chip Pearson
Microsoft MVP 1998 - 2010
Pearson Software Consulting, LLC
www.cpearson.com
[email on web site]
On Mon, 1 Feb 2010 12:03:01 -0800, Ryan H
wrote:
This code will run your procedure when the workbook has been opened. At the
end of your code the OnTime event will schedule another run of your code 30
seconds later. Thus, it will continue to loop until you close the workbook.
Hope this helps! If so, let me know, click "YES" below.
Private Sub Workbook_Open()
Call my_Procedure
End Sub
Sub my_Procedure()
' your code here
Application.OnTime EarliestTime:=Now + TimeValue("00:00:30"),
Procedu="my_Procedure"
End Sub