La propiedad StatusBar del objeto Application en Excel VBA se puede utilizar para indicar el progreso de una macro larga. De esta forma, puede informar al usuario que todavía se está ejecutando una macro.
Situación:
La macro que vamos a crear llena Range ("A1: E20") con números aleatorios.
Agregue las siguientes líneas de código al botón de comando:
1. Primero, declaramos tres variables de tipo Integer, llamadas i, j y pctCompl.
Dim i As Integer, j As Integer, pctCompl As Integer
2. Agregue un bucle doble .
For i = 1 To 20
For j = 1 To 5
Next j
Next i
Agregue las siguientes líneas de código (en 3, 4 y 5) al ciclo.
3. Utilice la función RandBetween para importar un número aleatorio entre 20 y 100.
Cells(i, j).Value = WorksheetFunction.RandBetween(20, 100)
4. Inicialice la variable pctCompl. La segunda línea de código escribe el valor de la variable pctCompl y algún texto descriptivo en la barra de estado.
pctCompl = (i - 1) * 5 + (j * 1)
Application.StatusBar = "Importing Data.. " & pctCompl & "% Completed"
Ejemplo: Para i = 3, j = 1, (3 - 1) * 5 + (1 * 1) = 11% se ha completado.
5. Usamos el método Wait del objeto Application para simular una macro larga.
Application.Wait Now + TimeValue("00:00:01")
6. Para restaurar el texto predeterminado de la barra de estado, establezca la propiedad StatusBar en False (fuera del ciclo).
Application.StatusBar = False
Resultado al hacer clic en el botón de comando en la hoja:
Nota: Puede interrumpir una macro en cualquier momento presionando Esc o Ctrl + Break. Para un enfoque más visual, consulte nuestro programa de indicadores de progreso .
2/4 Completado! Obtenga más información sobre el objeto de aplicación>
Siguiente capítulo: Controles ActiveX