Fredric escribió sobre un problema que tenía con una macro. Cuando está ejecutando la macro en VB Editor usando F8 (pasando por la macro), se completa en solo unos minutos. Cuando ejecuta la macro directamente, parece tardar una eternidad en ejecutarse, a menudo tarda 20 minutos o más en ejecutarse. Aunque el libro de trabajo de Fredric es grande (46 MB), la diferencia de tiempo entre los dos métodos de ejecución es molesta.

Problemas como este pueden ser desconcertantes y, a menudo, requieren un análisis riguroso para resolverlos. Un buen lugar para comenzar es agregar algún «código de temporizador» en su macro. Agregue una pequeña rutina que ahorre un valor de tiempo y otra rutina que compare ese valor guardado con el tiempo actual y muestre la diferencia. Al comienzo de una sección de código que desea analizar, llama a la primera rutina (que guarda la hora de inicio)

y luego, al final de la sección de código, llama a la segunda rutina.

De esa manera, puede determinar qué partes de su código están tardando más en ejecutarse. Estas son las secciones de código en las que luego se enfoca, para que pueda averiguar qué están haciendo y que está tomando tanto tiempo.

Otra cosa que debes asegurarte es que agregas estas dos líneas al principio de tu macro:

Application.ScreenUpdating = False Application.EnableEvents = False

Apagan la actualización de la pantalla, lo que puede ralentizar una macro en ejecución y deshabilitar eventos. Esta última línea se incluye para que los cambios realizados por la macro en su hoja de trabajo no activen las rutinas de recálculo de Excel. Si su macro está realizando muchos cambios en los datos de la hoja de trabajo y se activa un nuevo cálculo completo después de cada cambio, entonces, con un libro de trabajo tan grande, se puede dedicar mucho tiempo a hacer el recalc. Al final de tu macro, inviertes el efecto de las dos líneas que agregaste:

Application.EnableEvents = True Application.ScreenUpdating = True

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2436) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:

link: / excelribbon-Macro_Runs_Slowly_but_Steps_Quickly [La macro se ejecuta lentamente, pero avanza rápidamente].