VBA Excel尽pipeuserform窗口运行代码然后停止button单击

在这里和谷歌发现一些提示,但不能正确实施。

说我有一个循环运行,我需要显示一个button“取消”的框。 代码必须运行,直到我按下button。 在下面的例子中,我使用了For循环,并在Label1.Caption中显示迭代编号

' action of UserForm1 on Button Click Private Sub CommandButton1_Click() cancel = True End Sub Public cancel as boolean Sub example () cancel = False Dim i As Integer For i = 1 To 1000 Application.Wait (Now + #12:00:01 AM#) UserForm1.Label1.Caption = CStr(i) UserForm1.Show vbModeless If cancel = True Then Exit For End If Next i End Sub 

此代码运行,但它不会对button点击作出反应。 如果我做UserForm1.Show vbModal ,然后代码停止并等待,直到我点击button。 我做错了什么?

这是我的代码,当用户frmTest.Show false打开frmTest.Show false时,它完美的工作

 Dim cancelbool As Boolean Function loopfunction() Dim i As Integer i = 0 Do Until cancelbool DoEvents Me.lblIteration.Caption = i i = i + 1 Loop End Function Private Sub cmdCancel_Click() cancelbool = True End Sub Private Sub UserForm_Activate() loopfunction End Sub 

另外, Application.Wait会使您的应用程序无法响应