给个例子你: Option Explicit Private blnExecFlag As Boolean Private Sub Command1_Click() blnExecFlag = False End SubPrivate Sub Command2_Click() blnExecFlag = True While (blnExecFlag) Debug.Print CStr(Now) DoEvents Wend MsgBox "È¡Ïû£¡" End Sub
Option Explicit
Private blnExecFlag As Boolean
Private Sub Command1_Click()
blnExecFlag = False
End SubPrivate Sub Command2_Click()
blnExecFlag = True
While (blnExecFlag)
Debug.Print CStr(Now)
DoEvents
Wend
MsgBox "È¡Ïû£¡"
End Sub
在每一句前加一个if 判断,else exit sub,但这样并不能取消sub前面所做的工作,而且你并不知道sub执行到何处会中止,这对一个完成一定功能的子程序来说,这是致命的,你必须能够确保能恢复到程序执行前的状态,除非你的目的就是为了得到这种不确定的改变。