所以我构建了这个计时器宏,不止一个youtube人已经指定了如何以完全相同的方式构建,但它仍然拒绝工作。
Sub StartTimer()
Application.OnTime Now + TimeValue("00:00:01"), "nextTime"
End Sub
Sub nextTime()
If Sheet1.Range("I1") = 0 Then Exit Sub
End If
Range("I1").Value = Range("I1").Value - TimeValue("00:00:01")
StartTimer
End Sub
Sub StopTimer()
Application.OnTime Now + TimeValue("00:00:01"), "nextTime", , False
End Sub
问题出现在StartTimer子例程中的代码行中。如下错误所示,nextTime方法无法识别: 宏可能在此工作簿中不可用,或者可能禁用所有宏。显然不是这种情况,因为我的所有其他宏都工作,子程序就在那里。你有什么建议吗?
答案 0 :(得分:2)
将您的代码移出工作表代码模块,并将其放入正常的代码模块中。
或者,您可以通过将其完全限定为Sheet1.nextTime
来调用它(其中Sheet1
需要是代码所在的工作表代码名称),但我认为最好将它放入项目级代码模块。
您还需要从End If
子例程中删除nextTime
。
您需要修复StopTimer
例程以传递正确的时间 - 即下一个事件将要运行的时间。
Public nextRunTime As Date
Sub StartTimer()
nextRunTime = Now + TimeValue("00:00:01")
Application.OnTime nextRunTime, "nextTime"
End Sub
Sub nextTime()
If Sheet1.Range("I1") = 0 Then Exit Sub
Range("I1").Value = Range("I1").Value - TimeValue("00:00:01")
StartTimer
End Sub
Sub StopTimer()
Application.OnTime nextRunTime, "nextTime", , False
End Sub