Kuy*_*nda 8 vba modal-dialog modeless userform progress-indicator
将VBA中的ProgressBar UserForms显示为模态还是无模式更好?在VBA中制定进度指标的最佳做法是什么?
无模式UserForms需要使用Application.Interactive = False,而Modal UserForms本质上阻止与应用程序的任何交互,直到核心过程完成或被取消.
Application.Interactive = False但是,如果使用了,则Esc键会中断代码执行,因此在UserForm和调用过程中都需要使用Application.EnableCancelKey = xlErrorHandler和错误处理(Err.Number = 18).
资源密集型调用程序也能导致CommandButton_Click和UserForm_Activate在无模式用户窗体哑火事件.
通常,使用模态UserForms的进度指示器似乎更简单,因为正在执行的代码完全包含在UserForm模块中,并且不需要传递变量.
但是,对于进度指示器使用模态UserForms的问题是,每个需要进度指示器的过程都需要单独的UserForm模块,因为调用过程必须在UserForm_Activate过程中.
因此,虽然在无模式UserForm中可以有一个可重用的进度指示器,但它比在多个模态UserForms中执行代码的可靠性低.
哪种方式更好?
谢谢!
我要结束这个比赛并说莫代尔是胜利者。我已经尝试了这两种方法,但最终你试图用无模式用户表单来堵住太多的漏洞。模态更困难,因为它更严格,但它鼓励您将代码分解成更小的块,从长远来看这更好。
| 归档时间: |
|
| 查看次数: |
5622 次 |
| 最近记录: |