Para hacer barras de progresos en Excel hay diversas maneras, para esta ocasión les presentaré 2.
Barra de progreso - Ejemplo 1
La primera es la más básica y sirve cuando quieras cargar una información y si se quiere que se ejecute una barra de progreso sin ningún problema, para ello se necesitará lo siguiente:
Crear un UserForm, se mantendrá con el mismo nombre; a continuación, se cambia el Caption en esta ocasión por “Indicador de Progreso”.
Primero, creamos un marco (desde la caja de controles), borramos el Caption para que quede en blanco, luego se modifica la propiedad Width a 204 y Height a 24.
Luego, crearemos una etiqueta, le cambiamos el nombre a “Texto”, ello servirá para que cambie hasta “100% Completado” a medida que avanza nuestra barra. Después, creamos otra etiqueta a la cual llamaremos “Barra”, se modifica su propiedad Width a 10 y Height a 24, adicionalmente se cambiará el BackColor (seleccionamos la pestaña de Paleta) por uno verde.
Ahora, seleccionamos en cualquier espacio libre del UserForm y colocaremos el siguiente código:
Private Sub UserForm_Activate()
‘Para que se ejecute solamente en la Hoja1
Sheets("Hoja1").Select
code
End Sub
A continuación, hacemos click derecho en Hoja2 y creamos un módulo en el cual introduciremos el siguiente código:
Sub code()
‘Declaramos las variables que se van a iterar
Dim i As Integer, j As Integer, pctCompl As Single
‘El siguiente código es para que se limpie la Hoja1 cuando queramos empezar la barra de progreso
Hoja1.Cells.Clear
'El siguiente código es para que escriba el código en la columna A, hasta la fila 1000, si no se hace esto la barra se ejecutará rápido.
For i = 1 To 100
For j = 1 To 1000
Cells(i, 1).Value = j
Next j
pctCompl = i
progress pctCompl
Next i
End Sub
Sub progress(pctCompl As Single)
‘Los siguientes códigos son para que a medida se va iterando, se cambien los valores en los dos Label.
UserForm1.Texto.Caption = pctCompl & "% Completado"
UserForm1.Barra.Width = pctCompl * 2 'con esta línea se actualiza la barra de progreso, la barra tiene un ancho de 200, y como "i" va de 1 a 100, al multiplicarse por 2 llega al tamaño total de la barra.
DoEvents
End Sub
‘Nota: Usamos la Hoja1 para que se registre los datos, pero si se desea trabajar se tendrá que hacer a partir de la Hoja2
Barra de progreso - Ejemplo 2
Para el segundo caso, tendremos dos opciones, la primera será crear una barra normal, con la función que va a crear un documento PDF. Para la macro de la barra de progreso se hará los siguientes pasos:
Primero, como en el caso anterior, crearemos un UserForm, al cual llamaremos “UserForm_v1”, un marco, al que llamaremos “FramProgress”, en este caso al Caption le colocaremos el 0%.
Adicionalmente se agregará 2 etiquetas (Labels), para el que nos va a indicar el porcentaje de avance se mantendrá con el nombre que aparece, en mi caso se llama “Label10”, y la etiqueta que hará la función de la barra se llamará “LabelProgress”.
En este caso se le puede adicionar una imagen, se tendrá que hacer click en el control Imagen y cargar una imagen en JPG. En este caso yo le agregué la de un robot, pero se puede cambiar a su preferencia.
En el código de correspondiente se incluye un control para ver el efecto en la barra de progreso:
startTime = Timer ' Se captura el tiempo actual
Do
Loop Until Timer - startTime >= 0.1 ' Avanza luego de una décima de segundo
Ahora, después de usar la grabadora de macros, simularemos descargar (lentamente) nuestro documento Excel en un documento PDF
Adicionalmente, agregaremos el código de nuestra macro para la barra de progreso la cual tendrá el siguiente código.
Cabe resaltar que solamente se podrá generar el PDF una vez, si se quiere volver a descargar se tendrá que eliminar el archivo anterior.
Descargar ejemplo con la barra de progreso: Barra de progreso VBA
Por: Carlos Allende
07/06/2024 a las 12:26 pm
Saludos excelente todo lo aporte bien explicado. Mucho me han ayudado, pero este no me guarda el archivo exportado en la carpeta de descarga, por que sera?