Crear una barra de progreso en Excel VBA

Bilal Shahid 21 junio 2023
  1. Barra de progreso en Microsoft Excel
  2. Cómo crear una barra de progreso en Excel
  3. Conclusión
Crear una barra de progreso en Excel VBA

Visual Basic para aplicaciones es un lenguaje de programación basado en eventos que se utiliza para las aplicaciones de Microsoft. Permite a los usuarios automatizar tareas y reescribir varias funcionalidades según sus requisitos.

VBA le permite al usuario realizar múltiples tareas con la ayuda de algunas declaraciones de código almacenadas en forma de macro. La macro permite al usuario reutilizar el código una y otra vez.

Barra de progreso en Microsoft Excel

Los datos se manipulan constantemente en Microsoft Excel. Cargar datos de una base de datos, manipular los registros y resumir los resultados son los usos más comunes de Microsoft Excel, especialmente en las empresas.

Microsoft Excel ofrece poderosas herramientas para realizar todas las tareas con la ayuda de funcionalidades básicas. Para aprovechar las funcionalidades básicas que ofrece Microsoft Excel, se utiliza VBA.

VBA es una excelente opción para automatizar diferentes tareas. Le permite aprovechar la funcionalidad básica de Microsoft Excel y crear un programa específico para sus necesidades.

Crear una barra de progreso en VBA es bastante fácil. Le permite realizar un seguimiento de sus actividades.

Puede monitorear cuánto progreso se ha hecho y ejecutar tareas paralelas con él. Puede realizar un seguimiento de varias tareas simultáneamente con la ayuda de una barra de progreso.

La pequeña adición de una barra de progreso puede marcar una gran diferencia en la eficiencia de sus programas. Le permite realizar tareas de manera más eficiente.

Cómo crear una barra de progreso en Excel

UserForm en Microsoft Excel le permite crear una barra de progreso para su hoja usando el control progressbar. Sin embargo, para actualizar continuamente la barra de progreso creada, es necesario vincular algunas declaraciones de código que hacen este trabajo.

Este artículo menciona dos métodos para crear una barra de progreso en Microsoft Excel.

Barra de progreso numerada

Esta solución es ideal para usted si no desea crear una barra de progreso elegante. Una barra de progreso numerada muestra la salida de la siguiente manera:

Barra de progreso numerada

Para implementar esta barra de progreso simple en Microsoft Excel, use el siguiente código:

Dim i As Integer

'Change the loop according to your requirements
For i = 1 To 1500
    'Perform the tasks here

    'Update the progress bar
    Application.StatusBar = "Progress: " & x & " of 1500: " & Format(x / 1500, "0%")

Next x

Application.StatusBar = False

Una barra de progreso numerada es bastante fácil de implementar. No requiere mucho esfuerzo y funciona perfectamente.

Barra de progreso elegante

Esta solución es ideal si desea diseñar una elegante barra de progreso. La Barra de estado en Excel se disfraza como una barra de progreso usando caracteres Unicode.

Los caracteres Unicode en el rango 9608 a 9615 se utilizan como barras. Puede elegir un carácter del rango.

La longitud de la barra de progreso estará definida por la variable prestada en el código.

' ProgressBar Class Module

Option Explicit

Private Const lent As Integer = 50
Private Const maxlent As Integer = 255
Private charBar As String
Private charSpace As String
Private statusBarVar As Boolean
Private enableEventsVar As Boolean
Private screenUpdatingVar As Boolean

Private Sub initialization()
    ' The initial state of the variables is saved for the progress bars
    charBar = ChrW(9608)
    charSpace = ChrW(9620)
    statusBarVar = Application.DisplayStatusBar
    enableEventsVar = Application.EnableEvents
    screenUpdatingVar = Application.ScreenUpdating
    Application.DisplayStatusBar = True
    Application.ScreenUpdating = False
    Application.EnableEvents = False
End Sub

Private Sub classend()
    ' Restore all the settings
    Application.DisplayStatusBar = statusBarVar
    Application.ScreenUpdating = screenUpdatingVar
    Application.EnableEvents = enableEventsVar
    Application.StatusBar = False
End Sub

Public Sub Update(ByVal Value As Long, _
                  Optional ByVal MaxValue As Long= 0, _
                  Optional ByVal Status As String = "", _
                  Optional ByVal DisplayPercent As Boolean = True)

    If Value < 0 Or MaxValue < 0 Or (Value > 100 And MaxValue = 0) Then Exit Sub

    ' If the maximum is set, then adjust the value to be in the range of 0 to 100
    If MaxValue > 0 Then Value = WorksheetFunction.RoundUp((Value * 100) / MaxValue, 0)

    ' Message to set the status bar to
    Dim display As String
    display = Status & "  "

    ' Set bars
    display = display & String(Int(Value / (100 / lent)), charBar)

    ' set spaces
    display = display & String(lent - Int(Value / (100 / lent)), charSpace)

    ' Closing character to show the end of the bar
    display = display & charBar

    If DisplayPercent = True Then display = display & "  (" & Value & "%)  "

    ' chop off to the maximum length if necessary
    If Len(display) > maxlent Then display = Right(display, maxlent)

    Application.StatusBar = display
End Sub

El código mencionado anteriormente establece los valores iniciales de las funciones DisplayStatusBar como True, ScreenUpdating como False y EnableEvents como False.

La subrutina Actualizar() edita la visualización de la barra de progreso en función del parámetro que recibe.

La subrutina classend() restablece los valores de las funcionalidades DisplayStatusBar, ScreenUpdating y EnableEvents.

Para crear una instancia de la clase, use el siguiente código:

Dim fancyProgressBar As New ProgressBar
Dim i As Integer

For i = 1 To 100
    Call fancyProgressBar.Update(i, 100, "Progress Bar", True)
    ' Required tasks can be mentioned here
Next i

Puede experimentar con los caracteres Unicode para diseñar diferentes barras de progreso. La gama 9608 a 9615 tiene diferentes diseños para la barra de progreso con diferentes espacios.

Experimente con las variables para diseñar una barra de progreso personalizada para usted.

Conclusión

Una barra de progreso es muy útil cuando se ejecutan varias tareas en paralelo. Le permite realizar un seguimiento de la actividad de las tareas una al lado de la otra.

Además, también puede medir el tiempo requerido para las diferentes tareas. Esto le permite programar las tareas de una manera ideal.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub