[英]VBA runtime 1004 error
我在VBA中遇到運行時1004錯誤的問題。 我制作了一個時間注冊工具,以測量特定操作所需的時間。 奇怪的是,代碼可以完美地運行10次中的9次。 10次中只有1次會生成此運行時錯誤。 我看不到是什么原因導致了這個問題! 我沒有做任何不同的事情,但是偶爾會產生此錯誤。
我做了谷歌,並結合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
它使我發瘋,尤其是因為它在大多數時間都有效! 希望有人可以在這里幫助我:)
提前致謝!!
巴特
將子項目調度為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方法(Excel)
EarliestTime的值四舍五入到最接近的秒數。
將Schedule設置為false可以清除先前使用相同的Procedure和EarliestTime值設置的過程 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.