VBA运行时1004错误

时间:2016-05-18 10:06:18

标签: excel vba excel-vba

我在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

它让我疯狂,特别是因为它大部分时间都有效!希望有人可以帮助我在这里:)

提前致谢!!

巴特

Runtime error

Code thats generating the error

1 个答案:

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