以下VBA代码停止在Me.Show
。在我的测试中,看起来Me.Show
停止了所有的代码执行,即使代码位于UserForm中。为什么显示用户窗体为模态停止代码执行?
这部分是用户窗体外:
Public Sub TestProgress()
Dim objProgress As New UserForm1
objProgress.ShowProgress
Unload objProgress
End Sub
这部分是用户窗体内:
Private Sub ShowProgress()
Me.Show vbModal
Dim intSecond As Integer
For intSecond = 1 To 5
Application.Wait Now + TimeValue("0:00:01")
Me.ProgressBar1.Value = intSecond/5 * 100
Next intSecond
Me.Hide
End Sub
代码停止在Me.Show
,则显示用户窗体之后。没有错误,它只是停止执行代码。看来,以执行VBA模式UserForm内部代码的唯一方法就是把它列入了UserForm_Activate过程是这样的:
这部分是用户窗体外:
Public Sub TestProgress()
Dim objProgress As New UserForm1
Load objProgress
Unload objProgress
End Sub
这部分是用户窗体内:
Private Sub UserForm_Initialize()
Me.Show vbModal
End Sub
Private Sub UserForm_Activate()
Dim intSecond As Integer
For intSecond = 1 To 5
Application.Wait Now + TimeValue("0:00:01")
Me.ProgressBar1.Value = intSecond/5 * 100
Next intSecond
Me.Hide
End Sub
当然,我不能把Me.Show
内UserForm_Activate因为该过程只UserFo后大火rm显示事件。
为UserForm.ShowModal
文档说“当用户窗体是模态的时,用户必须提供信息或使用应用程序的任何其他部分之前关闭窗体。直到用户窗体被隐藏或卸载不执行任何后续的代码。”
我正在尝试使用模态UseForm作为进度条,以防止用户在进程运行时与应用程序进行交互。但是,如果我的所有代码必须位于UserForm_Activate过程中,这将很难完成。
我在这里错过了什么吗?为什么所有代码执行停止在Me.Show
?
所有你真的需要,如果你想仍然能够在窗体达与纸张互动做的是使用电话的用户窗体时,此代码: 'userform.show vbModeless'。 – Casey 2013-12-06 22:48:07