首页 > 解决方案 > VBA - 从模块更新 ProcessBar - 错误 800100007

问题描述

我想从模块main调用一个进程栏并从main更新该栏。我在我的UserForm1中有:

模块代码是:

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。我怎样才能让它工作?

标签: vbams-worduserform

解决方案


您需要更改显示表单的方式:

myUserForm.Show vbModeless

目前,循环不会执行,直到您关闭表单,此时表单不可用并生成错误。


推荐阅读