我使用以下链接:
http://www.ozgrid.com/Excel/run-macro-on-time.htm
存储我通过ontime
调用函数的时间,然后取消它。但是,在我最后一次存储后,我调用ontime()
然后关闭我的功能。问题是我刚刚存储的时间超出范围而且chanegs为空。所以使用上面的链接,我说一旦RunOnTime()
完成,dTime的值为空,因此当我调用CancelOnTime()
时它不起作用。我在例子中声明了dTime。除了我在ThisWorkbook中,一切都是一样的。
有人可以提供建议吗?
答案 0 :(得分:2)
您无法在已发布的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
答案 1 :(得分:1)
在示例中,变量 dTime 被声明为公开。事实上,它不一定是因为只有RunOnTime()
访问它,但能够使用您编写的函数访问它是有用的。 CancelOnTime()
不依赖于变量。
我想你可能会把自己与Watch混淆。要查看公共变量,请将上下文设置为“所有过程 - 所有模块”。