以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  建议金字塔增加Application.OnTime功能  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=183409)

--  作者:qq代人发帖
--  发布时间:2020/12/11 13:19:11
--  建议金字塔增加Application.OnTime功能
请教:建议金字塔增加Application.OnTime功能,方便VBA程序降低系统消耗,每隔一定时间运行一次软件。目前金字塔只有Application.setTimer

Sub macro_timer()

\'Tells Excel when to next run the macro.
Application.OnTime Now + TimeValue("00:00:1"), "my_macro"

End Sub

Sub my_macro()
\'Macro code that you want to run.
MsgBox "This is my sample macro output."

\'Calls the timer macro so it can be run again at the next interval.
Call macro_timer

End Sub
--  作者:yukizzc
--  发布时间:2020/12/11 13:55:09
--  
这个和计时器有啥区别呢
--  作者:haiquan5
--  发布时间:2020/12/11 14:31:39
--  
区别是:计时起点不一样。
计时器是从程序启动开始计时,比如计时器是5秒,然后执行一次代码,如果这段代码运行的时间是3秒,下一次执行就是2秒以后。而Application.OnTime函数,Application.OnTime Now + TimeValue("00:00:05"), "my_macro" 设定的是在这段代码完成后,比如在目前时间基础上增加5秒钟,5秒到了之后再开始运行代码。
计时器是一开始程序就运行着,始终没有停止过。而Application.OnTime函数是到了时间才运行。我的理解是这样的,不知是否正确。

--  作者:guotx2010
--  发布时间:2021/3/30 15:46:26
--  
代码的执行时间你是无法预计的,你可以设置一个全局变量,初始值设为0,在代码进入的地方,设置为1,运行完之后设置为0,在ontimer事件中,
判断这个变量是否为0,是就进入循环,不是就不进入,这样就可以避免上一次的操作还没有完成,下一次事件又进入了。

______________________________
QQ:253675026 wechat:guotx-