A continuación veremos un programa en Excel VBA que crea un indicador de progreso . Hemos mantenido el indicador de progreso tan simple como ha sido posible, sin embargo parece profesional. ¿Estáis listos?
La forma de usuario que vamos a crear tiene el siguiente aspecto:
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. 2. Haga clic en Insertar, Formulario de usuario. 3. Si la Caja de herramientas no aparece automáticamente, haga clic en Ver, Caja de herramientas. La pantalla debe configurarse como se indica a continuación.
Este formulario de usuario sólo consta de tres controles. Un control de cuadro y dos controles de etiqueta.
3. Añade el control de cuadro. Puede hacerlo haciendo clic en Marco desde la caja de herramientas. A continuación, puedes arrastrar un control de marco en el formulario de usuario. Necesitas cambiar algunas propiedades de este control del marco. Haz clic con el botón derecho del ratón en el control del marco, y luego haz clic en Propiedades. Vacía el campo de Título, establece el Alto a 24 y el Ancho a 204.
4. Añade el primer control de la etiqueta y colócalo en el control del marco. Haz clic con el botón derecho del ratón en el control de etiqueta y luego en Propiedades. Cambiar el nombre a Barra, BackColor a Resaltado, vaciar el campo de Pie de foto, establecer el Alto a 20 y el Ancho a 10.
5. Añade el control de la segunda etiqueta y colócalo sobre el control del cuadro. 6. Haz clic con el botón derecho del ratón en el control de la etiqueta y luego haz clic en Propiedades. 6. Cambie el nombre a Texto y cambie el Título a ‘0% Completo’.
6. Cambie el título del formulario de usuario por el de Indicador de progreso.
Una vez que esto se haya completado, el resultado debe ser coherente con la imagen del formulario de usuario mostrado anteriormente.
7. Coloque un botón de comando en su hoja de trabajo y añada la siguiente línea de código para mostrar el formulario de usuario:
Soldado Sub Sub CommandButton1_Click() Formulario de usuario1.Show End Sub
Si ha revisado los otros ejemplos de Userform en este sitio, sabe que es el momento de crear el Sub UserForm_Initialize. Este Sub se ejecuta automáticamente cada vez que se carga el Userform. Por lo tanto, cuando use el método Show para el Userform, el código será ejecutado automáticamente. En lugar del Sub UserForm_Initialize, creamos el Sub UserForm_Activate. Usando este sub, Excel VBA puede actualizar la Userform para mostrar el progreso del macro.
8. Abra el Editor de Visual Basic.
9. En el Explorador del Proyecto, haga clic con el botón derecho en UserForm1 y luego haga clic en View Code.
10. 11. Elija Formulario de usuario en la lista desplegable de la izquierda. 11. Seleccione Activar en la lista desplegable de la derecha.
11. Añade la siguiente línea de código:
Formulario privado de subusuario_activar() código End Sub
Explicación: este submarino llama a otro submarino llamado código que vamos a crear en un minuto. ¿Confuso? Puedes revisar nuestro capítulo de funciones y subcapítulos para aprender más sobre los subcapítulos. Si tienes prisa, ejecuta los siguientes pasos y estarás bien.
12. Coloca el código de subnombre en un módulo (en el editor de Visual Basic, haz clic en Insertar, Módulo). Esto es sólo un ejemplo. Este es EL lugar para agregar su propio código cuando quiera usar este indicador de progreso para su propia macro. El código tiene el siguiente aspecto.
Sub código() Dim i Como Entero, j Como Entero, pctCompl Como Sencillo Hoja 1. Células. Despejado Para i = 1 a 100 Para j = 1 a 1000 Células(i, 1).Valor = j Siguiente j pctCompl = i progress pctCompl Siguiente… End Sub
Explicación: primero, inicializamos algunas variables. Luego, limpiamos la hoja 1. Usamos un doble bucle 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 percentageCompleted) mide el progreso de la macro. Finalmente, llamamos a otro subnombre progreso y pasamos el valor de la variable pctCompl para actualizar el Userform. De esta manera podemos ver el progreso del macro!
13. Añade otro sub nombre de progreso. El código tiene el siguiente aspecto:
Subprogreso (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 la leyenda del primer control de etiqueta. La segunda línea de código cambia el ancho del segundo control de la etiqueta. Añade DoEvents para actualizar el Userform.
14. Salga del Editor de Visual Basic y haga clic en el botón de comando de la hoja:
Resultado:
Nota: para esta macro, usamos la variable i para medir el progreso. Por ejemplo, en la fila 11, el 10% está completado. Esto puede ser diferente para su macro. La técnica de pasar el valor de la variable pctCompl al sub-progreso para actualizar el Userform sigue siendo la misma.