Barra de Progreso
Hola, necesito tu ayuda para ver si me puedes resolver la siguiente duda:
He conseguido un ejemplo de archivo en el que se utiliza una barra de progreso con el siguiente código:
Sub Test()
' The UserForm1_Activate sub calls Main
UserForm1.LabelProgress.Width = 0
UserForm1.Show
End Sub
Sub Main()
' Inserts random numbers on the active worksheet
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Cells.Clear
Application.ScreenUpdating = False
Counter = 1
RowMax = 100
ColMax = 25
For r = 1 To RowMax
For c = 1 To ColMax
Cells(r, c) = Int(Rnd * 1000)
Counter = Counter + 1
Next c
PctDone = Counter / (RowMax * ColMax)
With UserForm1
.FrameProgress.Caption = Format(PctDone, "0%")
.LabelProgress.Width = PctDone * (.FrameProgress.Width - 10)
End With
' The DoEvents statement is responsible for the form updating
DoEvents
Next r
Unload UserForm1
End Sub
'Al Activarse el formulario llama al procedimiento Main ...
Private Sub UserForm_activate()
Call Main
End Sub
El mismo está diseñado para que trabaje con un ejemplo de números aleatorios, pero yo necesito que trabaje con un procedimiento que a continuación expongo en el que simplemente ejecuta varias macros una detrás de otra, de esta forma...
Private Sub CmdInsertarDatos_Click()
Macro_inicio
Macro_1
Macro_2
Macro_3
Macro_4
Macro_5
Macro_6
Macro_7
Macro_8
End Sub
¿Es posible aplicar el ejemplo para que la barra de progreso se inicie cuando comience la primera macro y finalice cuando termine la última?
Me encantaría poder colocar dicha utilidad a mi aplicación, pero si consideras que es complicado lo dejaré como está.
Gracias de antemano.
He conseguido un ejemplo de archivo en el que se utiliza una barra de progreso con el siguiente código:
Sub Test()
' The UserForm1_Activate sub calls Main
UserForm1.LabelProgress.Width = 0
UserForm1.Show
End Sub
Sub Main()
' Inserts random numbers on the active worksheet
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Cells.Clear
Application.ScreenUpdating = False
Counter = 1
RowMax = 100
ColMax = 25
For r = 1 To RowMax
For c = 1 To ColMax
Cells(r, c) = Int(Rnd * 1000)
Counter = Counter + 1
Next c
PctDone = Counter / (RowMax * ColMax)
With UserForm1
.FrameProgress.Caption = Format(PctDone, "0%")
.LabelProgress.Width = PctDone * (.FrameProgress.Width - 10)
End With
' The DoEvents statement is responsible for the form updating
DoEvents
Next r
Unload UserForm1
End Sub
'Al Activarse el formulario llama al procedimiento Main ...
Private Sub UserForm_activate()
Call Main
End Sub
El mismo está diseñado para que trabaje con un ejemplo de números aleatorios, pero yo necesito que trabaje con un procedimiento que a continuación expongo en el que simplemente ejecuta varias macros una detrás de otra, de esta forma...
Private Sub CmdInsertarDatos_Click()
Macro_inicio
Macro_1
Macro_2
Macro_3
Macro_4
Macro_5
Macro_6
Macro_7
Macro_8
End Sub
¿Es posible aplicar el ejemplo para que la barra de progreso se inicie cuando comience la primera macro y finalice cuando termine la última?
Me encantaría poder colocar dicha utilidad a mi aplicación, pero si consideras que es complicado lo dejaré como está.
Gracias de antemano.
2 Respuestas
Respuesta de fejoal
1
Respuesta de jmsermol
1