Barra de progreso de VBA

Barra de progreso de Excel VBA en Excel

La barra de progreso es algo que nos muestra cuánto de un proceso se ha realizado o terminado cuando ejecutamos grandes conjuntos de códigos que requieren más tiempo para ejecutarse, usamos la barra de progreso en VBA para mostrarle al usuario el estado del proceso, o si tenemos varios procesos ejecutándose en un solo código, usamos la barra de progreso para mostrar qué proceso ha progresado cuánto.

Una barra de progreso muestra el porcentaje de tareas completadas cuando la tarea real se ejecuta detrás de la pantalla con un conjunto de instrucciones dadas por el código.

Cuando el código VBA tarda una cantidad considerable de tiempo en ejecutarse, es la ansiedad del usuario saber qué tan pronto puede terminar. Por defecto, debemos esperar el tiempo completo para completar la tarea, pero al insertar la barra de progreso, conocemos el progreso del código VBA.

En casi todos los programas informáticos, vemos un gráfico de barras de progreso que muestra el progreso de la tarea que estamos realizando al igual que la imagen de abajo.

En Excel, podemos crear la barra de progreso utilizando la codificación VBA. Si alguna vez se ha preguntado cómo podemos crear una barra de progreso, este es el artículo hecho a su medida.

Puede descargar esta plantilla de barra de progreso de VBA aquí - Plantilla de barra de progreso de VBA

Crea tu propia barra de progreso

Para crear una barra de progreso, debemos seguir varios pasos. A continuación, se muestran los pasos que debe seguir al crear el gráfico de barras de progreso.

Paso 1: Cree o inserte un nuevo formulario de usuario.

Tan pronto como haga clic en la opción de arriba, verá un formulario de usuario como el siguiente.

Paso 2: Presione la tecla F4 para ver la ventana de propiedades de VBA.

En esta pestaña de propiedades, necesitamos cambiar las propiedades del formulario de usuario de VBA que hemos insertado.

Paso 3: Cambie el nombre del formulario de usuario a UFProgressBar.

Ahora podemos referir este formulario de usuario con el nombre "UFProgressBar" mientras codificamos.

Paso 4: Cambie la propiedad Mostrar modelo del formulario de usuario a FALSO.

Paso 5: Ahora ajuste la alineación del usuario para que se ajuste a sus necesidades. He cambiado la altura del formulario de usuario a 120 y el ancho a 300.

Paso 6: Cambie el título del formulario de usuario a "Barra de estado de progreso".

Paso 7: Ahora desde la caja de herramientas del formulario de usuario, inserte LABEL en el formulario de usuario en la parte superior.

Con esta etiqueta, necesitamos establecer las propiedades de la etiqueta. Elimine el título, déjelo en blanco y ajuste el ancho de la etiqueta.

Paso 8: Cambie el nombre de la etiqueta a "ProgessLabel".

Paso 9: Ahora desde la caja de herramientas toma el marco y dibuja justo debajo de la etiqueta que hemos insertado en los pasos anteriores. Asegúrese de que el marco esté en el centro del formulario de usuario.

Paso 10: Ahora necesitamos cambiar algunas de las propiedades del Marco para que se vea exactamente igual que el formulario de usuario que hemos insertado.

Propiedad 1: Cambie el nombre del marco a "ProgressFrame".

Propiedad 2: Elimine el título y déjelo en blanco.

Propiedad 3: Cambie el efecto especial del marco a 6 - fmSpecialEffectBump.

Después de todos estos cambios, nuestro formulario de usuario debería verse así.

Paso 11: Ahora inserte una etiqueta más. Esta vez inserte la etiqueta justo dentro del marco que hemos insertado.

Al insertar la etiqueta, asegúrese de que el lado izquierdo de la etiqueta se ajuste exactamente al marco que hemos insertado como se muestra en la imagen de arriba.

Paso 12: Después de insertar la etiqueta, cambie las propiedades de la etiqueta de la siguiente manera.

Propiedad 1: Cambie el nombre de la etiqueta a "MainProgressLabel".

Propiedad 2: Elimina el título.

Propiedad 3: Cambie el color de fondo según su deseo.

Ok, ahora hemos terminado con el proceso de configuración de la barra de progreso y, en este momento, se ve así.

Ahora necesitamos ingresar códigos para que esto funcione perfectamente.

Paso 13: Para hacer el marco, agregue la siguiente macro en Excel.

Código:

 Sub InitUFProgressBarBar () With UFProgressBar .Bar.Width = 0 .Text.Caption = "0%" .Mostrar vbModeless End With 

Nota: "UFProgressBar" es el nombre que se le da al formulario de usuario y "Bar" es el nombre que se le da al marco que hemos creado y "Texto" es el nombre que se le da a la etiqueta dentro del marco.

Ahora, si ejecuta este código manualmente o mediante la tecla F5, deberíamos ver la barra de progreso como esta.

Step 14: Now we need to create a macro to perform our task. I am performing the task of inserting serial numbers from 1 to 5000. Along with this code, we need to configure the progress bar chart as well, below code is the tailor-made code for you.

Code:

 Sub ProgressBar_Chart() Dim i As Long Dim CurrentUFProgressBar As Double Dim UFProgressBarPercentage As Double Dim BarWidth As Long i = 1 Call InitUFProgressBarBar Do While i <= 5500 Cells(i, 1).Value = i CurrentUFProgressBar = i / 2500 BarWidth = UFProgressBar.Border.Width * CurrentUFProgressBar UFProgressBarPercentage = Round(CurrentUFProgressBar * 100, 0) UFProgressBar.Bar.Width = BarWidth UFProgressBar.Text.Caption = UFProgressBarPercentage & "% Complete" DoEvents i = i + 1 Loop Unload UFProgressBar End Sub