Kuy*_*nda 7 vba modal-dialog userform
以下VBA代码停在Me.Show.从我的测试来看,似乎Me.Show停止所有代码执行,即使代码在UserForm中.
这部分在UserForm之外:
Public Sub TestProgress()
Dim objProgress As New UserForm1
objProgress.ShowProgress
Unload objProgress
End Sub
Run Code Online (Sandbox Code Playgroud)
这部分在UserForm中:
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
Run Code Online (Sandbox Code Playgroud)
Me.Show显示UserForm后代码停止.没有错误,它只是停止执行代码.似乎在VBA中的模式UserForm中执行代码的唯一方法是将它包含在UserForm_Activate过程中,如下所示:
这部分在UserForm之外:
Public Sub TestProgress()
Dim objProgress As New UserForm1
Load objProgress
Unload objProgress
End Sub
Run Code Online (Sandbox Code Playgroud)
这部分在UserForm中:
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
Run Code Online (Sandbox Code Playgroud)
当然,我不能放入Me.ShowUserForm_Activate,因为该过程仅在UserForm Show事件之后触发.
UserForm.ShowModal" UserForm是模态的,用户必须在使用应用程序的任何其他部分之前提供信息或关闭UserForm的文档.在隐藏或卸载UserForm之前,不会执行任何后续代码. "
我正在尝试使用模式UseForm作为进度条,以防止用户在进程运行时与应用程序交互.但是如果我的所有代码都必须在UserForm_Activate过程中,那么这将很难实现.
我在这里错过了什么吗?为什么所有代码执行都停止了Me.Show?
Rob*_*rns 11
当显示表单时vbModal,代码将暂停执行并等待用户与表单交互.例如,单击按钮或使用下拉列表.
如果您更新表单属性
ShowModal = False
Run Code Online (Sandbox Code Playgroud)
并vbModal从您的代码中删除.这将允许在显示表单时继续执行代码.
我正在寻找一个答案,为什么我收到以下错误:
运行时错误'5':无效的过程调用或参数
运行这行代码时:
UserForm1.Show True
Run Code Online (Sandbox Code Playgroud)
即使这条线有效:
UserForm1.Show False
Run Code Online (Sandbox Code Playgroud)
当然.真与vbModal不同!所以简单的答案就是使用正确的枚举:
UserForm1.Show vbModal
UserForm1.Show vbModeless
Run Code Online (Sandbox Code Playgroud)
我想我已经明白了这一点。
Me.ShowUserForm_Activate 事件触发后。如果 UserForm_Activate 过程中没有代码,则不会发生任何事情,因为 VBA 正在等待Me.Hide.
所以事件的顺序是:Me.Show>>UserForm_ActivateMe.Hide
我想要运行的任何代码都必须位于 UserForm_Activate 过程中并且必须位于 Me.Hide.
该结构非常严格,但我也许可以利用该结构来发挥我的优势。
| 归档时间: |
|
| 查看次数: |
76331 次 |
| 最近记录: |