Excel VBA中的定时警报

时间:2011-02-02 15:29:13

标签: excel vba excel-vba timer excel-2003

我制作了一个日历来跟踪Excel 2003中的任务和类似项目。 我需要做的是通过VBA设置计时器。像这样:

run_in_x_secs ( timetowait, function to exec)

有没有办法在excel vba中执行此操作,或者我应该尝试通过命令行查找警报并从VBA运行该警报。

你会怎么做?

3 个答案:

答案 0 :(得分:3)

Public Sub tt()

timerset = TimeValue("01:00:00") 'the time you want
Application.OnTime timerset, "myfun"

End Sub

Sub myfun()
 'do whatever you want
End Sub

答案 1 :(得分:3)

这应该可以解决问题:

Public Sub RunSubInXSeconds(secondsToWait As Long, nameOfFunction As String)
    Application.OnTime Now + secondsToWait/(24# * 60# * 60#), nameOfFunction 
End Sub

虽然你必须对OnTime有点小心,特别是如果你要将它设置为等待很长一段时间......例如如果在计时器到期之前关闭工作簿并且Sub执行,那么您最终可以打开自己的工作簿来运行它。如果你不指望它会感到困惑!

答案 2 :(得分:2)

还有两个选择:

'Option 1
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Sub Sleep()
 Sleep 1000   'whait 1 second
End Sub

'Option 2
Sub MyWaitMacro()
  newHour = Hour(Now())
  newMinute = Minute(Now())
  newSecond = Second(Now()) + 3
  waitTime = TimeSerial(newHour, newMinute, newSecond)
  Application.Wait waitTime
End Sub