我正在尝试编写一个无限期运行的程序,直到我停止它。出于某种原因,它在早期(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
答案 0 :(得分:2)
Timer返回自午夜以来的秒数,因此如果在Timer循环回零之前调用pause
函数,可能会遇到问题。
想象一天只有100秒,并且在pause
时拨打Timer = 99.5
- 可能最终会得到t
的值为100.5,在这种情况下{{1}永远都是真的,你的Do循环永远不会退出。
t > Timer