La macro se ejecuta lentamente, pero avanza rápidamente (Microsoft Excel)
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 es asegurarse de agregar estas dos líneas al comienzo de su 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
Es posible que también desee desactivar el cálculo automático mientras se ejecuta la macro. Al hacerlo, se asegura de que Excel no intente calcular resultados intermedios mientras la macro está moviendo cosas o trabajando con datos. Para desactivar el cálculo automático, use esta línea al comienzo de su macro:
Application.Calculation = xlCalculationManual
Es una buena idea desactivar el cálculo automático en una macro solo si su macro no se basa en la información calculada en la hoja de trabajo. Si lo desactiva, puede volver a activar el cálculo automático más tarde colocando la siguiente línea cerca del final de su macro:
Application.Calculation = xlCalculationAutomatic
Un lector sugirió centrarse en otra aplicación mientras la macro se ejecuta en la hoja de cálculo de Excel. Por ejemplo, abra el Bloc de notas y active esa ventana. La macro debería acelerarse considerablemente cuando Excel ya no esté activo. Otra opción para probar es mover el puntero del mouse hacia el área de la barra de tareas en lugar de tenerlo en la hoja de cálculo activa de Excel.
_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 (818) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Macro_Runs_Slowly_but_Steps_Quickly [La macro se ejecuta lentamente, pero avanza rápidamente]
.