A continuación, veremos un programa en Excel VBA que crea un indicador de progreso . Hemos mantenido el indicador de progreso lo más simple posible, pero parece profesional. ¿Estás listo?

El formulario de usuario que vamos a crear tiene el siguiente aspecto:

Indicador de progreso en Excel VBA

Para crear este formulario de usuario, ejecute los siguientes pasos.

1. Abra el Editor de Visual Basic . Si el Explorador de proyectos no está visible, haga clic en Ver, Explorador de proyectos.

2. Haga clic en Insertar, formulario de usuario. Si la Caja de herramientas no aparece automáticamente, haga clic en Ver, Caja de herramientas. Su pantalla debe configurarse como se muestra a continuación.

Configuración de pantalla de formulario de usuario en Excel VBA

Este formulario de usuario solo consta de tres controles. Un control de marco y dos controles de etiqueta.

3. Agregue el control de marco. Puede hacer esto haciendo clic en Marco en la Caja de herramientas. A continuación, puede arrastrar un control de marco en el formulario de usuario. Necesita cambiar algunas propiedades de este control de marco. Haga clic con el botón derecho del mouse en el control del marco y luego haga clic en Propiedades. Vacíe el campo Título, establezca Alto en 24 y Ancho en 204.

4. Agregue el primer control de etiqueta y colóquelo en el control Frame. Haga clic con el botón derecho del mouse en el control de la etiqueta y luego haga clic en Propiedades. Cambie el nombre a Barra, BackColor a Resaltar, vacíe el campo Título, establezca Alto en 20 y Ancho en 10.

5. Agregue el segundo control de etiqueta y colóquelo encima del control Marco. Haga clic con el botón derecho del mouse en el control de la etiqueta y luego haga clic en Propiedades. Cambie el nombre a Texto y cambie el título a '0% completado'.

6. Cambie el título del formulario de usuario a Indicador de progreso.

Una vez que se haya completado, el resultado debe ser coherente con la imagen del formulario de usuario que se mostró anteriormente.

7. Coloque un botón de comando en su hoja de trabajo y agregue la siguiente línea de código para mostrar el formulario de usuario:

Private Sub UserForm_Activate()

code

End Sub

Si ha revisado los otros ejemplos de formularios de usuario en este sitio, sabe que este es el momento de crear el Sub UserForm_Initialize. Este Sub se ejecuta automáticamente cada vez que se carga el formulario de usuario. Por lo tanto, cuando utilice el método Show para el formulario de usuario, el código se ejecutará automáticamente. En lugar de Sub UserForm_Initialize, creamos Sub UserForm_Activate. Al usar este sub, Excel VBA puede actualizar el formulario de usuario para mostrar el progreso de la macro.

8. Abra el Editor de Visual Basic .

9. En el Explorador de proyectos, haga clic con el botón derecho en UserForm1 y luego haga clic en Ver código.

10. Elija Userform de la lista desplegable de la izquierda. Elija Activar en la lista desplegable de la derecha.

11. Agregue la siguiente línea de código:

Private Sub UserForm_Activate()

code

End Sub

Explicación: este sub llama a otro sub código con nombre que vamos a crear en un minuto. ¿Confundido? Puede consultar nuestro subcapítulo Función y subcapítulo para obtener más información sobre los subs. Si tiene prisa, simplemente ejecute los siguientes pasos y estará bien.

12. Coloque el código con nombre secundario en un módulo (en el Editor de Visual Basic, haga clic en Insertar, Módulo). Este es solo un ejemplo. Este es EL lugar para agregar su propio código cuando desee utilizar este indicador de progreso para su propia macro. El código tiene el siguiente aspecto.

Sub code()

Dim i As Integer, j As Integer, pctCompl As Single

Sheet1.Cells.Clear

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

Explicación: primero, inicializamos algunas variables. A continuación, borramos sheet1. Usamos un ciclo doble para mostrar los valores de 1 a 1000 en las primeras 100 filas de la hoja de trabajo. Esto mantendrá a Excel VBA ocupado por un tiempo y nos da la oportunidad de ver el progreso de la macro. La variable pctCompl (abreviatura de porcentaje completado) mide el progreso de la macro. Finalmente, llamamos a otro sub llamado progreso y pasamos el valor de la variable pctCompl para actualizar el formulario de usuario. ¡De esta forma podemos ver el progreso de la macro!

13. Agregue otro sub llamado progreso. El código tiene el siguiente aspecto:

Sub progress(pctCompl As Single)

UserForm1.Text.Caption = pctCompl & "% Completed"
UserForm1.Bar.Width = pctCompl * 2

DoEvents

End Sub

Explicación: la primera línea de código cambia el título del primer control de etiqueta. La segunda línea de código cambia el ancho del segundo control de etiqueta. Agregue DoEvents para actualizar el formulario de usuario.

14. Salga del Editor de Visual Basic y haga clic en el botón de comando en la hoja:

Resultado:

Resultado del indicador de progreso

Nota: para esta macro, usamos la variable i para medir el progreso. Por ejemplo, en la fila 11, se completa el 10%. Esto puede ser diferente para su macro. La técnica de pasar el valor de la variable pctCompl al subprogreso para actualizar el formulario de usuario sigue siendo la misma.

4/11 Completado! Obtenga más información sobre los formularios de usuario>
Siguiente capítulo: Rango