View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Bob Phillips Bob Phillips is offline
external usenet poster
 
Posts: 10,593
Default OnTime Application Newbie Question

Public RunWhen As Double
Public Const cRunIntervalSeconds = 120 ' two minutes
Public cRunWhat As String ' the name of the procedure to run

Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
If RunWhen - Int(RunWhen) = TimeSerial(8, 30, 0) And _
RunWhen - Int(RunWhen) <= TimeSerial(16, 0, 0) Then
cRunWhat = "GetData"
Else
cRunWhat = "StartTimer"
End If
Application.OnTime EarliestTime:=RunWhen, _
Procedu=cRunWhat, _
Schedule:=True
End Sub

Sub GetData()
MsgBox "hello" '<my code
StartTimer
End Sub


Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, _
Procedu=cRunWhat, _
Schedule:=False
End Sub



--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)



"John V" wrote in message
...
I have cobbled together Chip Pearson's code for running an macro queries of
Yahoo Finance for stock data (code also borrowed). Here's the basic
structure
so far:

Public RunWhen As Double
Public Const cRunIntervalSeconds = 120 ' two minutes
Public Const cRunWhat = "GetData" ' the name of the procedure to run

Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, Procedu=cRunWhat,
Schedule:=True
End Sub

Sub GetData()
<my code
StartTimer
End Sub

There is also another generic piece of code courtesy of Mr. Pearson:

Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedu=cRunWhat,
Schedule:=False
End Sub

..but it is not currently being called.

I want to 1) GetData (see above) between 9:00 and 15:30 daily only (this
spreadsheet will reside on a dedicated computer, hopefully always on), and
2)
perform other macros at, say, 8:30 and 16:00 daily. I am uncertain how
these
last two items get coded. Any help appreciated.