VBA Userform加载栏在窗口关闭之前不会运行

时间:2014-05-22 21:27:35

标签: excel vba userform

我似乎无法解决为什么这不起作用。我希望每个A用户窗体中的标签增加宽度。

但是当我运行它时,其余的子程序将不会运行,直到表单关闭。我怎么能阻止这个?

    Sub movepost()

    Dim a As Range
    Dim rcount As Long
    Dim load As Variant

    Dim load1 As Variant
    Dim width As Variant

    width = fmLoadingBar.Label1.width

        For Each a In Range("a2:A9999")
            If a.Value = "" Then
            rcount = a.Row
            End If

        Next a

    DoEvents
    fmLoadingBar.Show


    rcount = (rcount - 1) * 12
    load = width / rcount
    fmLoadingBar.Label1.width = 0


        For Each a In Range("A2:l9999")

                If a.Column = 1 Then

                ElseIf a.Column = 6 Then
                ElseIf a.Column = 7 Then

                ElseIf a.Column = 11 Then

                ElseIf a.Value = "" Then

                    a.Value = a.Offset(0, -1).Value
                ElseIf a.Value = "" And a.Offset(1, 0).Value = "" And a.Offset(1, 0).Value = "" And a.Offset(1, 0).Value = "" Then

                    Exit For


                End If

            load1 = load1 + load

            fmLoadingBar.Label1.width = load1

        Next a
    Unload fmLoadingBar

    End Sub

1 个答案:

答案 0 :(得分:1)

您的表单没有参数显示,因此默认为模式表单。您需要一个非模态形式,这意味着子将继续而不等待表单卸载。试试这个:

fmLoadingBar.Show vbModeless

循环可能不会给程序(Excel)时间做其他事件然后你要求它(例如在屏幕上绘制图形,或听鼠标滚动等)。让Excel环顾四周#39;对于在循环中执行的其他事件,您可以在循环中使用DoEvents。但要注意,因为它会在性能上花费你。先没有它进行测试。