【发布时间】:2018-09-30 00:25:08
【问题描述】:
我希望在运行长宏时显示“请稍候”弹出窗口。我发现最简单的方法是让用户表单在开头显示并在结尾消失。 我遇到的问题是用户表单内的标签直到子完成后才显示......
这是我的测试代码。我错过了什么?
Sub testPleaseWait()
UserForm1.Show vbModeless
Dim a As Integer
a = 0
While a < 1000
Debug.Print a
a = a + 1
Wend
Unload UserForm1
End Sub
用户表单仅由一个标签(称为“Label1”)组成。 我试图在用户表单的“激活”子上设置标题,但这没有帮助。
提前感谢您的回答!
亚历克斯
【问题讨论】:
-
在循环中 a=0 时尝试重新绘制表单?
-
尝试将您的代码放入
Userform_Activate,然后从另一个子中调用您的用户表单。 -
扩展@dwirony 的答案:在
.Show控制权到达Sub UserForm1_initialize之后。所以有一个Sub UserForm1_initialize(),然后发出UserForm1.Label1 = "Please wait..."。 -
您的代码正在运行,但没有让系统有时间处理用户表单显示。只需在
.Show后添加DoEvents -
@Robert Todar:在调用者模块中的无模式状态下执行不间断地继续。甚至
UserForm1.Label1 = "Please wait..."赋值也可以在.Show vbModeless之后以模块testPleaseWait完成,它会执行所需的行为。