Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Barra de progreso Excel

Barra de progreso VBA

| Sin comentarios

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. 

Barra de progreso VBA

 

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

Deja una respuesta

Los campos requeridos estan marcados con *.