ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 我使用了OnTime函数 关闭文件后总是自动打开,求解决方案!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-7-13 23:23 | 显示全部楼层 |阅读模式
我的excel中使用了下面的函数来触发定时复制命令AutoCopy(),但是文件关闭后会自动重新打开,关闭多次都是如此
Private Sub Workbook_Open()

    Application.OnTime Now + TimeValue("00:01:00"), "AutoCopy"
   
End Sub

后查阅资料后增加了下面这个关闭之前解除OnTime 的程序,但是不起作用

Private Sub Workbook_BeforeClose()

    Application.OnTime Now + TimeValue("00:01:00"), Procedure:="AutoCopy", Schedule:=False
            
End Sub

求大师帮忙解决怎么才能解决自动重启文件的问题,非常感谢!

另外,如果哪位知道有其他定时函数可以取代OnTime来完成定时执行程序的功能也可以,求帮忙解决,万分感激!



TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-13 23:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-7-14 02:52 | 显示全部楼层
本帖最后由 gbgbxgb 于 2020-7-14 09:45 编辑
gkxt007 发表于 2020-7-13 23:45
有知道怎么解决的吗?

很简单,之所以出现你所描述的情况,原因是你执行关闭工作簿的操作时并没有真正取消此前安排的命令计划,此Now+TimeValue()非彼Now+TimeValue(),若觉得这话拗口,难以理解,那就打个比喻吧:某人月黑风高夜行偷香窃玉,再一风高月黑夜又行窃玉偷香事,问:同为月黑风高,此徒行事同一天耶?


结论:两个Now()的时点显然不同,故你认为的被False的Schedule其实是不存在的,而早先Now()过的那个Schedule依然存在,它被Excel牢牢记着并忠实地到点执行。
解决方法:定义个变量(一般要全局变量,因为要定时执行的那个Sub过程通常放在标准模块,而WorkBook的Open事件和Close事件在ThisWorkbook模块,两个模块都要用到这个变量)存放指定执行的时间,往后就可以False这个变量对应的Schedule了。

真难以相信,废话说了一堆,不知说明白了没,还是上个附件吧。
定时自动复制.rar (5 KB, 下载次数: 23)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-14 13:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 14:51 , Processed in 0.044107 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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