[英]Excel Function 'Application.OnTime' still running after closing the workbook
I am using Excel (Office 365).我正在使用 Excel(Office 365)。
here is a video with my problem: link这是我的问题的视频: 链接
The internet is full of examples where people say that the code should work when we set Schedule
to False
but sadly that did not help me.互联网上有很多例子,人们说当我们将Schedule
设置为False
时代码应该可以工作,但遗憾的是这对我没有帮助。
The code should start a cycle using Application.OnTime
and stop it before closing the workbook.代码应使用Application.OnTime
开始一个循环并在关闭工作簿之前停止它。
stopF
manually, in the VBA Editor, it stops Application.OnTime
properly.如果我在 VBA 编辑器中手动运行 function stopF
,它会正确停止Application.OnTime
。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
I don't have a clue what could I do more.我不知道我还能做些什么。
My temporary solution to my question:我对我的问题的临时解决方案:
I left the whole code like it was and added into Module1
following code:我将整个代码保留原样,并将以下代码添加到Module1
中:
' In Module1:
Sub closeWorkbook()
Call stopF
ThisWorkbook.Close
End Sub
The point is:重点是:
stopF
called from Workbook_BeforeClose
will work对于从Workbook_BeforeClose
调用的手动关闭stopF
将起作用stopF
called from a module
will work.对于从module
调用的 vba 关闭stopF
将起作用。A bit more detailed:更详细一点:
Workbook_BeforeClose => Call stopF
will be triggered and it will stop Application.OnTime
properly.当用户手动关闭工作簿(关闭 Excel 窗口)时,将触发Workbook_BeforeClose => Call stopF
并正确停止Application.OnTime
。Workbook_BeforeClose
function (because it doesn't work for this somehow) but I call my new closeWorkbook()
function when needed, which does terminate Application.OnTime
and then closes the workbook.如果我想通过代码关闭工作簿,那么我不依赖Workbook_BeforeClose
function (因为它不适用于此方法)但我在需要时调用我的新closeWorkbook()
function,它会终止Application.OnTime
然后关闭工作簿。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.