2

大きなプロシージャ(RunLargeSub)を毎秒実行する必要があり、このプロシージャが完了するまでに約0.5秒かかります。現在Application.OnTimeを使用していますが、これによりRunLargeSubが約1.5秒ごとに呼び出されることはありませんか?これを1.0sに修正することは可能ですか?

Sub Update()
    RunLargeSub
    NextTick = Now + TimeValue("00:00:01")
    Application.OnTime NextTick, "Update"
End Sub


Sub Stop()
    On Error Resume Next
    Application.OnTime NextTick, "UpdateClock", , False
    On Error GoTo 0
End Sub

すべてが大いに感謝するのに役立ちます。

4

1 に答える 1

1

RunLargeSub の後に NextTick を宣言します。そのため、1.5 秒かかります。RunLargeSub の前に宣言すると、正確に 1 秒かかります。しかし、メインのサブが実行を停止するため、RunLargeSub に 1 秒以上かかると問題が発生します。onTime が秒の端数を受け入れるかどうかはわかりませんが、それは可能です:

Sub Update()
    RunLargeSub
    NextTick = Now + TimeValue("00:00:01")/2
    Application.OnTime NextTick, "Update"
End Sub

RunLargeSub を実行する必要があり、0.5 秒後にサブルーチンが再度呼び出されます。

于 2012-12-13T15:02:42.000 に答える