/ / Indicador de progreso en Excel VBA

Indicador de progreso en Excel VBA

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á listo?

El formulario de usuario que vamos a crear se ve de la siguiente manera:

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 el Cuadro de herramientas no aparece automáticamente, haga clic en Ver, Cuadro de herramientas. Su pantalla debe configurarse como se muestra abajo.

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

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

3. Agregue el control de marco. Puedes 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. Necesitas cambiar algunas propiedades de este control de cuadro. Haga clic con el botón derecho del ratón en el control de marco, y luego haga clic en Propiedades. Vacíe el campo Título, establezca la Altura en 24 y el 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 etiqueta y luego haga clic en Propiedades. Cambie el nombre a Barra, BackColor a Resaltar, vacíe el campo Título, establezca la Altura en 20 y el Ancho en 10.

5. Agregue el segundo control de etiqueta y colóquelo sobre el control de marco. Haga clic con el botón derecho del mouse en el control de 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 al indicador de progreso.

Una vez que se haya completado, el resultado debe ser consistente 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 CommandButton1_Click()

UserForm1.Show

End Sub

Si has pasado por el otro formulario de usuarioEn los ejemplos de 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 utiliza el método Mostrar 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 en la lista desplegable de la izquierda. Seleccione 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 nombre código que vamos a crear en un minuto. ¿Confuso? Puede consultar nuestro Capítulo de funciones y subcapítulos 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 denominado en un módulo (en el Editor de Visual Basic, haga clic en Insertar, Módulo). Esto es solo un ejemplo. Este es EL lugar para agregar su propio código cuando desea usar este indicador de progreso para su propia macro. El código se ve como sigue.

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, despejamos hoja1. Usamos un bucle doble para mostrar los valores de 1 a 1000 en las primeras 100 filas de la hoja de trabajo. Esto mantendrá ocupado a Excel VBA por un tiempo y nos da la oportunidad de ver el progreso de la macro. La variable pctCompl (abreviatura de percentCompleted) 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 manera podemos ver el progreso de la macro!

13. Agrega otro sub llamado progreso. El código se ve como sigue:

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 progreso sub para actualizar el formulario de usuario sigue siendo la misma.

Lea también: