excel计时器宏无法正常工作,“无法找到宏或未启用宏”

时间:2016-12-18 06:46:16

标签: excel vba excel-vba macros

所以我构建了这个计时器宏,不止一个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方法无法识别:     宏可能在此工作簿中不可用,或者可能禁用所有宏。显然不是这种情况,因为我的所有其他宏都工作,子程序就在那里。你有什么建议吗?

1 个答案:

答案 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