I want to kick off a function once a day (for examle, at midnight). The timer seems a very inefficient way to do this. Is there any way of raising an event once a day to do this?
The Timer control only supports an Interval property up to 65535, which is about 65 seconds. You can use this, in combination with some extra code to start a program at midnight, let's say. Here's an example, assuming you have a timer control named tmrDaily:
Private Sub tmrDaily_Timer()
If Time >= #0:00# And datLastRun < Date Then
' run your code here
datLastRun = Date
You'll also need to maintain some sort of status, so that you only run the job once during the day. In this case, datLastRun is a variable defined outside this procedure as a Variant (for holding date/time values).