作者:绿色风
   分类:
   时间:2022-08-17
   浏览:195
      
  | 楼主 kevinchengcw
 | Q: 如何取消ontime预定的程序执行计划? A: 对于ontime预定的程序执行计划,同样可以用ontime自身来取消,语句书写规则如下:
 Application.OnTime EarliestTime:=原计划的运行时间, Procedure:="调用的程序名", Schedule:=False
 下面用一个实例来说明具体用法,代码如下:
 在取消过程中如何取得预定的时间是相当关键的,所以如果有计划用该语句取消一个或多个计划执行语句的话应考虑用公共变量或公共数组来传递相应的时间参数。 Dim mTime    '定义时间的公共变量,因为预订的时间是用now+timevalue来设定的,非固定时间,所以用公共变量来传递
Dim S As Integer   '另一个公共变量用来计数,因为要提醒剩余秒数
Sub test()
S = 10  '设定计数起始值为10
mTime = Now + TimeValue("00:00:10")  '设定时间为当前时间的十秒后
Show  '调用显示提示的程序
Application.OnTime mTime, "Showmsg"   '利用ontime在设定时间后启动显示对话框的程序
End Sub
Sub test2()
If mTime > Now Then Application.OnTime EarliestTime:=mTime, Procedure:="Showmsg", Schedule:=False   '如果设定时间晚于当前时间则取消设定的运行(防止过后还执行,则因预订程序已执行过了并清除了所以会出错)
ActiveSheet.Buttons("按钮 1").Caption = "定时弹出消息框"  '将按钮文字改回
MsgBox "取消了", 0, ""   '显示提示对话框
End  '停止程序运行
End Sub
Sub Show()
If mTime < Now Then Exit Sub   '如果当前时间比预定时间晚,即已执行完预定程序了,则退出
If S = 0 Then  '如果计时到零了,则复位按钮文字
    ActiveSheet.Buttons("按钮 1").Caption = "定时弹出消息框"
    End
End If
Application.OnTime Now + TimeValue("00:00:01"), "show"   '每隔一秒回调一次自身,用于更新按钮文字
ActiveSheet.Buttons("按钮 1").Caption = S & "秒后弹出消息框"   '更新按钮文字
S = S - 1  '计数减1
End Sub
Sub ShowMsg()
MsgBox "运行了", 0, ""   '显示消息框,如果出现了该消息框,则说明预定程序被执行了
End Sub
 
 附示例文件。
 
  取消定时执行的方法.rar 
 | 
| 2楼 herelazy
 | K哥的都是精品啊! | 
| 3楼 kangguowei
 | 学习了. | 
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
      ------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一