ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 891|回复: 5

[求助] 如何关闭设定好的Application.OnTimer

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-26 19:55 | 显示全部楼层 |阅读模式
在程序中使用了Application.OnTimer隔一段时间运行一个过程,但程序运行结束时,使用如下语句关闭Application.OnTimer,但不成功,程序还是会继续运行过程。不知道是不是关闭的语句有什么问题,求大神解答,“updatemiss”是运行的过程名
runtime2 = DateAdd("s", 5, Now)
runwhat2 = "updatemiss"
Application.OnTime runtime1, runwhat1, False

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-26 19:58 | 显示全部楼层
不好意思,里面的变量写错了,自顶

runtime1 = DateAdd("s", 5, Now)
runwhat1 = "updatemiss"
Application.OnTime runtime1, runwhat1, False

TA的精华主题

TA的得分主题

发表于 2017-6-26 20:13 | 显示全部楼层
关键还是时间匹配。你定时运行的时间中有一个Now,这个Now不太好掌控,时刻在变。当你想关闭定时器时,这个Now没法控制呀。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-26 20:50 | 显示全部楼层
maditate 发表于 2017-6-26 20:13
关键还是时间匹配。你定时运行的时间中有一个Now,这个Now不太好掌控,时刻在变。当你想关闭定时器时,这个 ...

那使用Application.OnTimer 就没有办法关闭了吗?还是说必须要把时间确定到几点几分?

TA的精华主题

TA的得分主题

发表于 2017-6-26 20:56 | 显示全部楼层
把需要运行的时间存放到公共变量,要撤消的话就用此公共变量。

TA的精华主题

TA的得分主题

发表于 2017-6-26 20:57 | 显示全部楼层
Chenxi91816 发表于 2017-6-26 20:50
那使用Application.OnTimer 就没有办法关闭了吗?还是说必须要把时间确定到几点几分?

Excel 开发人员参考
Application.OnTime 方法
安排一个过程在将来的特定时间运行(既可以是具体指定的某个时间,也可以是指定的一段时间之后)。
语法

表达式.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

表达式   一个代表 Application 对象的变量。

参数

名称 必选/可选 数据类型 描述
EarliestTime 必选 Variant 希望此过程运行的时间。
Procedure 必选 String 要运行的过程名。
LatestTime 可选 Variant 过程开始运行的最晚时间。例如,如果 LatestTime 参数设置为 EarliestTime + 30,且当到达 EarliestTime 时间时,由于其他过程处于运行状态而导致 Microsoft Excel 不能处于“就绪”、“复制”、“剪切”或“查找”模式,则 Microsoft Excel 将等待 30 秒让第一个过程先完成。如果 Microsoft Excel 不能在 30 秒内回到“就绪”模式,则不运行此过程。如果省略该参数,Microsoft Excel 将一直等待到可以运行该过程为止。
Schedule 可选 Variant 如果为 True,则预定一个新的 OnTime 过程。如果为 False,则清除先前设置的过程。默认值为 True。

说明


使用 Now + TimeValue(time) 可安排经过一段时间(从现在开始计时)之后运行某个过程。使用 TimeValue(time) 可安排某个过程只运行指定的时间。


示例


本示例设置从现在开始 15 秒后运行 my_Procedure。

Visual Basic for Applications
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"

本示例设置 my_Procedure 在下午 5 点开始运行。

Visual Basic for Applications
Application.OnTime TimeValue("17:00:00"), "my_Procedure"

本示例撤消前一个示例对 OnTime 的设置。

Visual Basic for Applications
Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
    Procedure:="my_Procedure", Schedule:=False


© 2006 Microsoft Corporation。保留所有权利。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 12:17 , Processed in 0.038994 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表