excel - 关闭工作簿后 Excel 函数“Application.OnTime”仍在运行
问题描述
我正在使用 Excel (Office 365)。
这是我的问题的视频:链接
互联网上有很多例子,人们说当我们设置为时代码应该可以工作Schedule
,False
但遗憾的是这对我没有帮助。
Application.OnTime
代码应该在关闭工作簿之前使用并停止它的循环。
- 如果我
stopF
在 VBA 编辑器中手动运行该函数,它会正确停止Application.OnTime
。 - 但是如果我关闭工作簿,它仍然会打开并继续执行
Application.OnTime
。
' In Module1:
Public startingTime As Double
Sub startF()
MsgBox "hello"
startingTime = Now + TimeValue("00:00:10")
Application.OnTime startingTime, "Module1.startF"
End Sub
Sub stopF() 'HERE IT WORKS GOOD
On Error Resume Next
Application.OnTime startingTime, "Module1.startF", , False
End Sub
' In ThisWorkbook:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call stopF 'HERE IT DOES NOT WORK GOOD
End Sub
我不知道我还能做些什么。
解决方案
我对我的问题的临时解决方案:
我保留了整个代码,并添加到Module1
以下代码中:
' In Module1:
Sub closeWorkbook()
Call stopF
ThisWorkbook.Close
End Sub
重点是:
stopF
对于从调用的手动关闭Workbook_BeforeClose
将起作用stopF
对于从 a 调用的 vba 关闭module
将起作用。
更详细一点:
- 当用户手动关闭工作簿(关闭 Excel 窗口)时,
Workbook_BeforeClose => Call stopF
将触发并Application.OnTime
正常停止。 - 如果我想通过代码关闭工作簿,那么我不依赖该
Workbook_BeforeClose
函数(因为它不适用于此功能),但我closeWorkbook()
会在需要时调用我的新函数,它会终止Application.OnTime
然后关闭工作簿。
推荐阅读
- wix - 在 WiX 的下一次更新中删除组件
- php - PHP - 按索引排序数组
- wordpress - 如何在 wordpress 页面中设置 HTML 标签,用户只需要放置内容。?
- javascript - vue.js:在 HTML 中突出显示 javascript 数组中的新对象
- php - 使用 post/get 请求将数据从 python 发送到 php
- ibm-mq - 在 XMS 和非托管模式下设置 WMQ_CCDTURL 不起作用
- npm - if-else 在 npm 运行脚本中的参数
- vulkan - 带有屏障或渲染通道的移动图像布局
- postgresql - POSTGRES:在表分区的情况下聚合全表数据
- c++ - C ++ Google模拟/单元测试:未调用模拟方法,原始方法是