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:
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.
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