vba - VBA - 从模块更新 ProcessBar - 错误 800100007
问题描述
我想从模块main调用一个进程栏并从main更新该栏。我在我的UserForm1中有:
- 具有最大值的Label5
- Label2与当前值
- 当前值从 0 到 100 的ProgressBar1
模块代码是:
Public Sub main()
Dim i, max, k, dummy As Long
Dim myUserForm As UserForm1
Set myUserForm = New UserForm1
max = 100
myUserForm.Label5 = max
myUserForm.Label2 = 0
myUserForm.Show
For i = 1 To max
myUserForm.UpdateStatus i
For k = 1 To 10000 'loop for time-consuming
dummy = Sqr(k)
Next
Next
Unload myUserForm
End Sub
UserForm1中的代码是:
Option Explicit
Public Sub UpdateStatus(i)
Me.Label2 = i
Me.ProgressBar1 = i
DoEvents
End Sub
UserForm1出现一次,然后我在myUserForm.UpdateStatus进入main错误800100007。我正在使用 VBA Word。我怎样才能让它工作?
解决方案
您需要更改显示表单的方式:
myUserForm.Show vbModeless
目前,循环不会执行,直到您关闭表单,此时表单不可用并生成错误。
推荐阅读
- mongodb - 如何在与运行 mongo 服务器的 PC 位于同一网络的 PC 上运行 mongo 客户端
- java - 与 Reactor 同步的反应链
- arrays - 猫鼬在没有 array.find 或 array.some 或 array.filter 的情况下找到找到的对象
- qt - 将 QQuickView 渲染到 QOpenGLFramebufferObject 时缺少对象
- regex - RegEx 字符串查找两个字符串并删除文件中的其余文本
- docusignapi - 一旦所有签名者都签署了文件,docusign 是否有任何回电或回复?
- windows - 任务计划程序,使用命令执行 powershell 脚本
- java - 这个关于 RunTimeException 的单元测试对我来说没有任何意义
- mongodb - mongoDB 正则表达式扫描优化 - 基于后缀?
- python - sqlalchemy 无法在过滤器选项中获取带有布尔字段的数据(用 is 指定)