在绘制UserForm后自动执行一些代码

Cut*_*ter 4 excel vba excel-vba

我创建了一个UserForm,用户需要填写三个字段.宏尝试在UserForm_Initialize()事件中自动检测这些字段的值,然后在三个字段中显示找到的值,但用户可以更改它们.但是,自动检测需要几秒钟,并且会延迟UserForm的外观.我希望UserForm在自动检测程序之前显示其字段为空白,然后让自动检测程序自动填充字段.最好的方法是什么?使UserForm非模态使宏运行而不等待用户的输入,这是有问题的.我不想要"自动检测"按钮:这必须自动完成.

Sid*_*out 11

使用Activate()事件代替Initialize():)

Private Sub UserForm_Activate()

End Sub
Run Code Online (Sandbox Code Playgroud)

跟进

谢谢!它可以工作,但似乎有一个错误:对话框全部为白色,直到宏完成.截图(对话框应为灰色)

不,这不是一个bug :)试试吧.添加Doevents如下所示.

Private Sub UserForm_Activate()
    UserForm1.ProgressBar1.Value = 0
    starttime = Timer
    While Timer - starttime < 1
        UserForm1.ProgressBar1.Value = (Timer - starttime) * 100
        DoEvents
    Wend
End Sub
Run Code Online (Sandbox Code Playgroud)

HTH

希德