我在VBA中遇到运行时1004错误的问题。我制作了一个时间注册工具,以测量特定操作所需的时间。奇怪的是,代码在10次中完美地运行了9次。只有10次中有1次会产生运行时错误。我看不出是什么导致了这个问题!我不做任何不同的事情,但偶尔会产生这个错误......
我做了google并结合Application.Ontime函数搜索了这个运行时错误,但我认为它的定义方式应该如何?下面是代码,我在网上的其他地方找到了代码。有一个带有命令按钮的工作表(每个用于特定的活动),一旦按下,就会调用StartTimer程序(在一个单独的模块中),再次按下并调用StopTimer程序(在一个单独的模块中)。该错误(有时)在StopTimer子中生成。
Public StartTime As Single
Public FinalTime As Single
Sub starttimer()
Application.OnTime Now + TimeValue("00:00:01"), "nexttick"
End Sub
Sub Nexttick()
Sheet1.Range("y2").Value = Sheet1.Range("y2").Value + TimeValue("00:00:01")
starttimer
End Sub
Sub Stoptimer()
With ThisWorkbook.Worksheets("Home")
Application.OnTime Now + TimeValue("00:00:01"), "nexttick", , False
End With
Sheets("Log").Range("c10000").End(xlUp).Offset(1, 0) = Format(Sheet1.Range("y2").Value, "h:mm:ss")
Sheets("Home").Range("y2").Value = 0
End Sub
它让我疯狂,特别是因为它大部分时间都有效!希望有人可以帮助我在这里:)
提前致谢!!
巴特
答案 0 :(得分:0)
[Earliest Time] 值应与将子计划安排到False
时最初设置的值相同。时间四舍五入到最接近的秒数,这就是为什么你有时可能会侥幸逃脱的原因。看到您为单元格指定时间值,请引用该单元格而不是在代码中设置时间:
Public StartTime As Single
Public FinalTime As Single
Sub starttimer()
StartTime = Now + TimeValue("00:00:01")
Application.OnTime StartTime, "nexttick"
End Sub
Sub Nexttick()
Sheet1.Range("y2").Value = Sheet1.Range("y2").Value + TimeValue("00:00:01")
starttimer
End Sub
Sub Stoptimer()
With ThisWorkbook.Worksheets("Home")
Application.OnTime StartTime, "nexttick", , False
End With
Sheets("Log").Range("c10000").End(xlUp).Offset(1, 0) = Format(Sheet1.Range("y2").Value, "h:mm:ss")
Sheets("Home").Range("y2").Value = 0
End Sub
参考: Application.OnTime Method (Excel)
EarliestTime 的值四舍五入到最接近的秒。
将计划设置为 false 以清除之前使用相同设置的程序 过程和 EarliestTime 值。