Excel VBA – Pausar (Break / Stop) y Reanudar una Macro
Este tutorial demostrará cómo pausar (break) y reanudar una macro en Excel.
Ser capaz de pausar una macro mientras se prueba el código VBA que se ha escrito es una forma útil de averiguar dónde puede haber «errores» en nuestro código. Hay varias formas de interrumpir la ejecución de la macro y reanudarla desde el punto en que se interrumpió.
Combinación de Teclas Control y Break (Ctrl+Break)
Si mantenemos pulsada la tecla Control y, a continuación, pulsamos la tecla Pause/Break cuando se está ejecutando código VBA, el código se detendrá inmediatamente con un mensaje de depuración que nos avisa de que se ha interrumpido la ejecución de la macro.
A continuación, podemos pulsar el botón Continuar en el cuadro de diálogo que aparece para seguir ejecutando la macro. Alternativamente, si pulsamos el botón Depurar del cuadro de diálogo, la macro resaltará la posición en la que dejó de ejecutarse. Si pasamos el ratón por encima de las variables existentes, podremos ver lo que hay almacenado en ellas. Esto puede ser muy útil para depurar nuestro código.
A continuación, podemos hacer clic en el botón Ejecutar de la cinta (o pulsar F5 en el teclado) para reanudar la ejecución de la macro.
Añadir Puntos de Interrupción a la Macro
Antes de iniciar la macro, podemos insertar puntos de interrupción en la macro para detener la macro en determinadas líneas de código.
Podemos ejecutar el código haciendo clic en el botón Ejecutar de la cinta de opciones o pulsando F5 en el teclado. La macro se detendrá en el punto de interrupción.
Pulse de nuevo el botón Ejecutar (la leyenda dirá ahora Continuar) para reanudar la macro o pulse F5.
Puede haber otras ocasiones en las que sea necesario pausar la ejecución de una macro VBA. Esto también puede hacerse utilizando los métodos Wait y Sleep. Estos métodos se utilizan más para retrasar el progreso real de la macro que para depurar el código real.
Por ejemplo, esta línea de código retrasará la ejecución de la macro hasta que hayan pasado 5 segundos más.
Application.Wait (Now + TimeValue("0:00:05"))