Indicador de progreso en Excel VBA
A continuación vamos a ver un programa en Excel VBA que crea un indicador de progreso. Hemos mantenido el indicador de progreso lo más simple posible, sin embargo, parece profesional. ¿Estás listo? El formulario de usuario que se va a crear un aspecto de la siguiente manera:
Para crear este formulario de usuario, ejecute los siguientes pasos.
-
Abra el Editor de Visual Basic. Si el Explorador de proyectos no es visible, haga clic en Ver, Explorador de proyectos.
-
Haga clic en Insertar, formulario de usuario. Si el cuadro de herramientas no aparece automáticamente, haga clic en Ver, Caja de herramientas. Su pantalla debe ser configurado de la siguiente manera.
Este formulario de usuario sólo se compone de tres controles. Un control de trama y dos controles de etiqueta.
-
Agregue el control de la trama. Usted puede hacer esto haciendo clic en el fotograma de la caja de herramientas. A continuación, puede arrastrar un control de marco en el formulario de usuario. Es necesario cambiar algunas propiedades de este control de trama. Botón derecho del ratón sobre el control de la trama y, a continuación, haga clic en Propiedades. Vaciar el campo de subtítulos, ajustar la altura y anchura de 24 a 204.
-
Añadir el primer control de etiqueta y colocarla en el control Frame. Botón derecho del ratón sobre el control de etiqueta y, a continuación, haga clic en Propiedades. Cambiar el nombre de Bar, BackColor para destacar, vaciar el campo Título, ajuste de la altura y anchura de 20 a 10.
-
Añadir el segundo control de etiqueta y colocarlo por encima del control Frame.
Botón derecho del ratón sobre el control de etiqueta y, a continuación, haga clic en Propiedades.
Cambiar el nombre de texto y cambiar el título a ‘0% Completado’.
-
Cambie el título del UserForm a Indicador de progreso.
Una vez que esto se ha completado, el resultado debe ser consistente con la imagen del formulario de usuario mostrado anteriormente.
-
Coloque un botón de comando en la hoja de trabajo y añadir la siguiente línea de código para mostrar el formulario de usuario:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Si usted ha pasado por los otros ejemplos formulario de usuario en este sitio, usted sabe que este es el momento de crear la Sub UserForm_Initialize. Este Sub se ejecuta automáticamente cada vez que se carga el formulario de usuario. Por lo tanto, cuando se utiliza el método Show para el formulario de usuario, automáticamente se ejecuta el código. En lugar de la Sub UserForm_Initialize, creamos la Sub UserForm_Activate. Mediante el uso de este sub, Excel VBA puede actualizar el formulario de usuario para mostrar el progreso de la macro.
-
Abra el Editor de Visual Basic.
-
En el Explorador de proyectos, haga clic en UserForm1 y haga clic en Ver código.
-
Elija formulario de usuario de la lista desplegable izquierda. Seleccione Activar en la lista desplegable de la derecha.
-
Agregar la siguiente línea de código:
Private Sub UserForm_Activate() code End Sub
Explicación: este sub llama a otro sub código de llamada que vamos a crear en un minuto. ¿Confuso? Puede ir a través de nuestro capítulo Función y Sub para aprender más sobre los submarinos. Si se tiene prisa, sólo hay que ejecutar los siguientes pasos y se le multa.
-
Coloque el sub nombre en código en un módulo (En el Editor de Visual Basic, haga clic en Insertar, Módulo). Esto es sólo un ejemplo. Este es el lugar para añadir su propio código cuando se desea utilizar este indicador de progreso para su propia macro. El código es 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: en primer lugar, que inicializar algunas variables. A continuación, vamos a aclarar sheet1.
Utilizamos un doble bucle para mostrar los valores de 1 a 1000 en las primeras 100 filas de la hoja de trabajo. Esto mantendrá Excel VBA ocupado durante un tiempo y nos da la oportunidad de ver el progreso de la macro. La variable pctCompl (abreviatura de percentageCompleted) mide el progreso de la macro. Por último, llamamos a otro sub llamado progreso y pasar el valor de la variable pctCompl para actualizar el formulario de usuario. De esta manera podemos ver el progreso de la macro! 13. Agregar otra sub llamado progreso. Las miradas código 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 la anchura de la segunda control de etiqueta. Añadir DoEvents para actualizar el formulario de usuario.
-
Para salir del Editor de Visual Basic y haga clic en el botón de comando en la hoja:
Resultado:
Nota: para esta macro, se utilizó la variable i para medir el progreso.
Por ejemplo, en la fila 11, el 10% se ha completado. Esto puede ser diferente para su macro. La técnica de pasar el valor de las variables pctCompl al progreso sub para actualizar el formulario de usuario sigue siendo el mismo.