VBA运行代码不间断

时间:2015-07-02 18:38:29

标签: vba while-loop

我正在尝试编写一个无限期运行的程序,直到我停止它。出于某种原因,它在早期(6小时后)循环退出。一个同事认为这是因为cpu中的错误,我应该使用布尔标志而不是字符串(错误的机会更少)。还有其他建议吗?

If CommandButton1.Caption = "Start" Then
    CommandButton1.Caption = "Stop"
Else
    CommandButton1.Caption = "Start"
End If


While CommandButton1.Caption = "Stop"
    pause 1
    Range("C1").Value = Range("C1").Value + 1
    If Range("C1").Value = 300 Then
        Range("C1").Value = 0
        takeameasurement      ' This function did not cause the problem
    End If
Wend

(如果你想知道我的暂停功能)

Function pause(time As Integer)
t = Timer + time      'wait for the table to settle before taking a measurement

Do While t > Timer
    DoEvents
Loop
End Function

1 个答案:

答案 0 :(得分:2)

Timer返回自午夜以来的秒数,因此如果在Timer循环回零之前调用pause函数,可能会遇到问题。

想象一天只有100秒,并且在pause时拨打Timer = 99.5 - 可能最终会得到t的值为100.5,在这种情况下{{1}永远都是真的,你的Do循环永远不会退出。

t > Timer