簡體   English   中英

VBA運行時1004錯誤

[英]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可以清除先前使用相同的ProcedureEarliestTime值設置的過程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM