Vba “excel计时器宏不工作”;宏可以';“找不到宏或宏未启用”;

Vba “excel计时器宏不工作”;宏可以';“找不到宏或宏未启用”;,vba,excel,macros,Vba,Excel,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").Valu

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

将您的代码移出工作表代码模块,并将其放入普通代码模块

或者,您可以通过将其完全限定为
Sheet1.nextTime
(其中
Sheet1
需要是代码所在的工作表代码名)来调用它,但我认为最好将其放入项目级代码模块中

您还需要从
nextime
子例程中删除
End If

您需要修复
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

将代码移出工作表代码模块,并将其放入普通代码模块

或者,您可以通过将其完全限定为
Sheet1.nextTime
(其中
Sheet1
需要是代码所在的工作表代码名)来调用它,但我认为最好将其放入项目级代码模块中

您还需要从
nextime
子例程中删除
End If

您需要修复
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

如何尝试运行宏?可能是名称冲突。sub之外的其他东西是否也被命名为
nextTime
?例如,如果模块也被命名为
nextTime
,则会发生错误。可能重复(我希望在回答之前注意到)。请查看:如何尝试运行宏?可能是名称冲突。sub之外的其他东西是否也被命名为
nextTime
?例如,如果一个模块也被命名为
nextTime
,则会发生错误。可能的重复项(我希望在回答之前注意到)。请看:sheet1.nexTime工作正常。谢谢你抽出时间。我对vba很陌生,所以我也会尝试一下你的建议。sheet1.nexTime的工作做得很好。谢谢你抽出时间。我对vba很陌生,所以我也会尝试你的建议。