ThisWorkbook不保存全局variables值来取消ontime()

我正在使用下面的链接:

http://www.ozgrid.com/Excel/run-macro-on-time.htm

存储我通过按时间调用函数的时间,然后取消它。 但是,我上次存储后,我打电话ontime()然后我的functionclosures。 问题是我刚刚储存的时间超出范围,并且空着。 所以使用上面的链接,我说,一旦RunOnTime()完成后,dTime的值是空的,因此当我调用CancelOnTime()它不起作用。 我在这个例子中声明了dTime。 除了我在ThisWorkbook以外,一切都是一样的。

任何人都可以build议吗?

在这个例子中,variablesdTime被声明为Public 。 事实上,这并不需要,因为只有RunOnTime()可以访问它,但能够使用你写的函数访问它是有用的。 CancelOnTime()不依赖于variables。

我想你可能会把自己弄得跟Watch一样。 要观看公共可变数据,请将上下文设置为“所有程序 – 所有模块”。

您不能在发布的ThisWorkbook模块中运行该代码。 ThisWorkbook是一个类模块,其中的过程默认情况下不在类之外。 首先,你需要制定任何OnTime公开的程序,所以它可以从课程外部访问(OnTime不在课堂外)。 接下来,任何对该过程的引用都需要在类名前加上。 有了这两个改变,你的代码将如下所示:

 Public dTime As Date Dim lNum As Long Public Sub RunOnTime() dTime = Now + TimeSerial(0, 0, 10) Application.OnTime dTime, "ThisWorkbook.RunOnTime" lNum = lNum + 1 If lNum = 3 Then CancelOnTime Else MsgBox lNum End If End Sub Sub CancelOnTime() Application.OnTime dTime, "ThisWorkbook.RunOnTime", , False End Sub