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.

Ejemplo de propiedad de Excel VBA StatusBar

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:

Resultado de la propiedad StatusBar de Excel VBA

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