La propiedad StatusBar del objeto Application en Excel VBA puede utilizarse para indicar el progreso de una macro larga. De esta manera, se puede hacer saber al usuario que una macro aún se está ejecutando.
Situación:
La macro que vamos a crear llena el rango («A1:E20») con números aleatorios.
Añade las siguientes líneas de código al botón de comando:
1. Primero, declaramos tres variables de tipo entero, llamadas i, j y pctCompl.
Dim i Como Entero, j Como Entero, pctCompl Como Entero
2. Añade un doble bucle.
Para i = 1 a 20 Para j = 1 a 5 Siguiente j Siguiente…
Añade las siguientes líneas de código (en 3, 4 y 5) al bucle.
3. Use la función RandBetween para importar un número aleatorio entre 20 y 100.
Células(i, j).Valor = Hoja de trabajoFunción.RandBetween(20, 100)
4. La segunda línea de código escribe el valor de la variable pctCompl y un texto descriptivo en la barra de estado.
pctCompl = (i – 1) * 5 + (j * 1) Application.StatusBar = «Importar datos… » & pctCompl & «% Completado»
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.
Aplicación. Espere ahora + TimeValue(«00:00:01»)
6. Para restaurar el texto predeterminado de la barra de estado, establezca la propiedad StatusBar en False (fuera del bucle).
Aplicación.StatusBar = Falso
Resultado cuando se hace clic en el botón de comando de la hoja:
Nota: Puedes interrumpir una macro en cualquier momento pulsando Esc o Ctrl + Break. Para un enfoque más visual, vea nuestro programa Indicador de Progreso.