Search code examples
excelvbauserform

How to update a userform that is a progress bar?


I'm trying to update my userform Updating (which is essentially a progress bar).

It doesn't update the first time the userform is called and the second time it only updates the label description and not the width of the bar.

Sub UpdateUpdatingUF(filenum As Integer, filecount As Integer)
    Dim filenumdbl As Double
    Dim filecountdbl As Double
    Dim boxwidth As Integer
    Dim barwidth As Integer
    Dim boxwidthdbl As Double
    filenumdbl = CDbl(filenum)
    filecountdbl = CDbl(filecount)
    boxwidthdbl = CDbl(boxwidth)
    boxwidth = 300
    barwidth = CInt(boxwidthdbl * filenumdbl / filecountdbl)
    With Updating
        .Label3.Caption = "Running file: " & CStr(filenum) & " / " & CStr(filecount)
        .ProgressBar.Width = barwidth
    End With
End Sub

I'm probably declaring too many variables but I am trying to make sure that that isn't the cause.

I'm testing with the procedure below.

Sub TestUpdate()
    Updating.Show
    Call UpdateUpdatingUF(3, 7)
    DoEvents
    Updating.Repaint
End Sub

Solution

  • Replace

    Updating.Show
    

    with

    Updating.Show vbModeless