Recuperé mi vieja cuenta, te paso el código;
Private Sub UserForm_Activate()
Dim Porcentaje As Double
'1
Porcentaje = 0
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
Call Corte1_1
'2
Call Corte1_2
Porcentaje = 0.111111111111111 * 1
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'3
Call Corte1_3
Porcentaje = 0.111111111111111 * 3
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'4
Call Corte1_4
Porcentaje = 0.111111111111111 * 4
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'5
Call Corte1_5
Porcentaje = 0.111111111111111 * 5
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'6
Call Corte1_6
Porcentaje = 0.111111111111111 * 6
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'7
Call Corte1_7
Porcentaje = 0.111111111111111 * 7
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'8
Call Corte1_8
Porcentaje = 0.111111111111111 * 8
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
'9
Call Corte1_9
Porcentaje = 0.111111111111111 * 9
Me.Caption = Format(Porcentaje, "0%")
Me.Barra.Width = Porcentaje * Me.Frame1.Width
DoEvents
MsgBox "Ha terminado el proceso de Generación de Semáforo", vbOKOnly, "Monitor de Embarques"
Sheets("Primer Corte").Visible = False
End
End Sub
Cada que se manda a llamar una macro con el 'call' te multiplica el paso 'n' por el producto de dividir 1 sobre los procesos que vas a ejecutar, es decir, si tu macro necesita mucho tiempo en correr, divide tu código en 'x' partes, así que =1/'partes de código'.
Suponiendo que partes tu código en 5, quedaría más o menos así;
Procentaje = 0.2 *5 (si vas en la parte 5).