Sub addprogress(ByVal IDStr As String, ByVal objName As UserForm) Dim addCtr As Control, i As Long, j As Long j = Val(Right(IDStr, 1)) * 1000 Set addCtr = objName.Controls(IDStr).Controls.Add("Forms.Label.1", "lblRunStatus" & IDStr, True) addCtr.Width = objName.Controls(IDStr).Width Set addCtr = objName.Controls(IDStr).Controls.Add("MSComctlLib.ProgCtrl.2", "ProgressBar" & IDStr, True) With addCtr .Height = 18 .Left = 10 .Top = 30 .Width = 160 .Min = 0 .Max = j .Visible = True DoEvents For i = 0 To j .Value = i objName.Controls("lblRunStatus" & IDStr).Caption = "It is running for No. " & i & " step....." & Int((i / j) * 100) & "%" DoEvents Next MsgBox "The operation completed!", vbOKOnly + vbExclamation, "Operation Finished" End With objName.Controls.Remove "lblRunStatus" & IDStr objName.Controls.Remove "ProgressBar" & IDStr End Sub Private Sub CommandButton1_Click() addprogress "Frame1", UserForm1 End Sub Private Sub CommandButton2_Click() addprogress "Frame2", UserForm1 End Sub |