Como incluir en un Userform, un progress bar

Dam necesito de tu ayuda.

Tengo la siguiente macro, y quisiera tener un progress bar, que me indique cuanto va avanzando la ejecución de las macros.

Sub CommandButton1_Click() 'Botón para imprimir líneas seleccionadas
Call Desprotejer_hojas
Sheets("RPV").Select
Rows("33:33").Select
Selection.AutoFilter
Selection.AutoFilter
Dim intX As Integer
Set wsbase = Worksheets("base")
'Valida la opción semana y Coloca las 2 primeras letras en Base.R1
Call validasemana
If continuar = 0 Then Exit Sub
'Valida que se haya seleccionado y Marca la última actualización listbox1
Call marcaultima
'Si no se seleccionó nada
If continuar = 0 Then Exit Sub
'Selecciona rutinas
If OptionButton7 Then
'Aquí hacer el llamado a la rutina
'Imprimir RPV Resumen
Call Imprimir_RPV_Resumen
End If
If OptionButton8 Then
'Aquí hacer el llamado a la rutina
'Imprimir RPV listado de clientes
Call Imprimir_RPV_listado_de_clientes
End If
If OptionButton9 Then
'Aquí hacer el llamado a la rutina
'Calcular, Imprimir y crear PDF
Call Calcular_Imprimir_y_crear_PDF
Call Protejer_hojas
End If
If OptionButton10 Then
'Aquí hacer el llamado a la rutina
'Sólo Imprimir y crear PDF
Call Sólo_Imprimir_y_crear_PDF
Call Protejer_hojas
End If
End Sub

AW

1 Respuesta

Respuesta
1

Puedes usar esta opción es sencilla:

Si sabes cuántos registros vas a procesar y tienes un contador por cada registro que procesas, sería algo así

reg = reg + 1

Application.StatusBar = "Procesando registro " & reg & " de " & totreg

Otra opción es crear en tu userform, precisamente, un progress bar

Si no lo tienes instalado en tu cuadro de herramientas (controles: command button, textbox, listobox, etc); lo puedes instalar, selecciona del menú : Herramientas / Controles adicionales y busca un controlo que se llame: "Microsoft progressbar Control, versión 6.0, presiona click en el checkbox para instalarla. Aceptar

Te anexo un archivo con los 2 ejemplos para que adaptes el que más te convenga.

https://www.dropbox.com/s/kqaahjh8m2i4yg8/progress%20bar.xls

Saludos. Dam

Si es lo que necesitas.

Hola Dam, abrí tu archivo y me esta apareciendo un mensaje de error de automatización, sabes a que se debe? no muedo ver el código del userform

Antes de abrir mi archivo, realizaste esto:

Otra opción es crear en tu userform, precisamente, un progress bar

Si no lo tienes instalado en tu cuadro de herramientas (controles: command button, textbox, listobox, etc); lo puedes instalar, selecciona del menú : Herramientas / Controles adicionales y busca un controlo que se llame: "Microsoft progressbar Control, versión 6.0, presiona click en el checkbox para instalarla. Aceptar

Prueba y me dices

TE anexo una macro para que ves la opción 1

https://www.dropbox.com/s/inemfft3d1bcvsm/progress%20bar2.xls

Saludos. Dam

Hola Dam, no entiendo esta macro, no se como ella puede detectar en cual reg esta ejecutando, la macro ppal es una que corre continua hasta culminar quisiera que me dijera del 1 al 100 cuantos registros se están procesando.

Gracias

Sub CommandButton1_Click() 'Botón para imprimir líneas seleccionadas
Call prog
Call Desprotejer_hojas
Sheets("RPV").Select
Rows("33:33").Select
Selection.AutoFilter
Selection.AutoFilter
Dim intX As Integer
Set wsbase = Worksheets("base")

'Valida la opción semana y Coloca las 2 primeras letras en Base.R1
Call validasemana
If continuar = 0 Then Exit Sub
'Valida que se haya seleccionado y Marca la última actualización listbox1
Call marcaultima
'Si no se seleccionó nada
If continuar = 0 Then Exit Sub

'Selecciona rutinas de acuerdo a la opción "IMPRIMIR SUPERIOR" O "IMPRIMIR LISTADO"
If OptionButton7 Then
'Aquí hacer el llamado a la rutina
'Imprimir RPV Resumen
Call Imprimir_RPV_Resumen
End If
If OptionButton8 Then
'Aquí hacer el llamado a la rutina
'Imprimir RPV listado de clientes
Call Imprimir_RPV_listado_de_clientes
End If
If OptionButton9 Then
'Aquí hacer el llamado a la rutina
'Calcular, Imprimir y crear PDF
Call Calcular_Imprimir_y_crear_PDF
Call HABILITAR_AREA_DE_PEGAR_INPUT´S
Call Protejer_hojas
End If
If OptionButton10 Then
'Aquí hacer el llamado a la rutina
'Sólo Imprimir y crear PDF
Call Sólo_Imprimir_y_crear_PDF
Call HABILITAR_AREA_DE_PEGAR_INPUT´S
Call Protejer_hojas
End If
End Sub

Tampoco podría estimarte el número de registros, ya que haces varios Call a otras funciones y no sé si en esas funciones abras otros archivos, lo que te recomiendo es que asignes un porcentaje a cada call y en función a eso avances el estatus bar, por ejemplo

Call prog

Application.StatusBar = "Porcentaje de avance del proceso 10%"

Call Desprotejer_hojas

Application.StatusBar = "Porcentaje de avance del proceso 20%"

Call validasemana

Application.StatusBar = "Porcentaje de avance del proceso 25%"

Call marcaultima

Application.StatusBar = "Porcentaje de avance del proceso 30%"

Call Imprimir_RPV_Resumen

Application.StatusBar = "Porcentaje de avance del proceso 75%"

Y así sucesivamente, si en cada call, puedes ir avanzando el porcentaje, se verá más significativo.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas