Easy Macro #6: Barra de progreso en VBA Excel.

Una cualidad que tienen las macros es la de poder realizar distintas tareas de manera automática dentro del entorno Excel (y muchas veces fuera de) pero a veces es difícil decirle al usuario de forma grafica en que punto de nuestro desarrollo nos encontramos corriendo la macro.

Es por eso que el día de hoy vamos a ver como programar una barra de progreso en VBA de forma muy sencilla para agregarla a nuestras macros.

Puedes descargar un libro de ejemplo puchandole aqui.

1. Como llamar a la barra de progreso.

Vamos a realizar esta acción en pasos para que nos sea mas fácil de entender.

– Abrimos cualquier libro de Excel y nos dirigimos a la ficha “Desarrollador” y de ahí abrimos Visual Basic (también puedes hacerlo con ALT+F11).

– Una vez dentro, insertaremos una UserForm dentro del libro de trabajo, para ello vamos a presionar click derecho sobre cualquier parte de nuestro proyecto y en la opción Insertar seleccionaremos UserForm.

– Aquí el paso importante. Con la UserForm activada seleccionaremos primero la barra de herramientas y, dando click derecho sobre ella, iremos a la opción “controles adicionales”.

vba_excel_controles_adicionales_userform

– Ahora, vamos a buscar la opción que se llama Barra de Progreso y saldremos del cuadro de dialogo. Nos aparecerá un nuevo botón a agregar como se muestra a continuación.

vba excel añadir barra de progreso

– Dibujamos nuestra nueva barra de progreso y continuamos.

vba excel barra de progreso

2. Usar la barra de progreso.

Dentro de las propiedades de la barra de progreso veremos que existen 2 valores, MAX y MIN. Gracias a estos valores, Excel puede saber que tan llena o vacia debe de estar la barra. Para modificar el llenado de una barra bastara con ingresar a su propiedad .value y seleccionar que tanto debe de estar llena.

vba excel propiedades barra de progreso

Un ejemplo fácil de esto seria meterla con un contador de tiempo, mismo que servirá para que cuando abramos la UserForm la barra se vaya llenando. Primero crea una UserForm como la que te muestro abajo.

vba excel barra de progreso ejemplo 1

¡Excelente! Dentro del código de la UserForm puedes escribir lo siguiente para ver como funciona.

Private Sub UserForm_Initialize()
ProgressBar1.Value = 0
End Sub
Private Sub CommandButton1_Click()
Dim alpha, delta, omega As Single
alpha = Timer()
Do Until delta >= 100
    omega = Timer()
    delta = delta + (omega - alpha)
    If delta >= 100 Then
        ProgressBar1.Value = 100
    Else
        ProgressBar1.Value = delta
    End If
Loop
MsgBox "Carga lista"
End Sub

Algo que también podría funcionar es hacer el proceso inverso, ósea que la barra vaya hacia atrás para figurar como si estuviera borrando algo. Para ello, vamos a agregar un nuevo botón de comando que haga el proceso inverso.

vba excel barra de progreso ejemplo 2

Cuando lo tengamos, el código seria parecido a esto.

Private Sub CommandButton2_Click()
Dim alpha, delta, omega As Single
delta = 100
ProgressBar1.Value = delta
alpha = Timer()
Do Until delta <= 0
    omega = Timer()
    delta = delta - (omega - alpha)
    If delta <= 0 Then
        ProgressBar1.Value = 0
    Else
        ProgressBar1.Value = delta
    End If
Loop
MsgBox "Borrado listo"
End Sub

¡Ahora tienes una barra de progreso super CUTE para presumir a tus amigos! Añádela a tus mejores desarrollos y sorprende a todos informándoles cuanto le falta a tu macro para terminar.

Cualquier duda nos leemos abajo.

Easy Macro #6: Barra de progreso en VBA Excel.
Scroll hacia arriba