我制作了一个日历来跟踪Excel 2003中的任务和类似项目。 我需要做的是通过VBA设置计时器。像这样:
run_in_x_secs ( timetowait, function to exec)
有没有办法在excel vba中执行此操作,或者我应该尝试通过命令行查找警报并从VBA运行该警报。
你会怎么做?
答案 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