Optimizar macros en Excel
La programación de macros en informes Excel generados por DataCycle es algo habitual, ya que filtrar información en tablas dinámicas a través de botones personalizados o bien a través de listas de valores se ha convertido en funciones útiles y necesarias para presentar la información de forma resumida y concisa.
Nos podemos encontrar ante la situación de tener una serie de macros que al actualizar mucho volumen de información, la ejecución tarde tanto que puede llegar a permanecer varios minutos recalculando sin permitir realizar ninguna otra acción hasta que finalice.
Esto es debido a que para cada cambio en las fórmulas de una hoja, porque se haya filtrado un campo de la tabla dinámica, por ejemplo, se recalculan los valores del resto de las fórmulas de la hoja .
Existen una líneas de código que ubicadas al principio y al final de la macro, optimizan el rendimiento ya que trasladan el cálculo de las celdas de todas las celdas al final de la ejecución de la macro.
El código sería el siguiente:
Al inicio de la macro ncluir la siguiente linea:
Application.Calculation = xlCalculationManual
.... (Código de la macro)
Al finalizar incluir estas dos:
Application.Calculation = xlCalculationAutomatic
Application.Calculate
Otra optimización de código es la siguiente instrucción, que ubicada al principio de la macro con valor 'Falso' permite que el refresco constante de la pantalla debido a la ejecución de cambios desaparezca.
Application.ScreenUpdating = False
.... (Código de la macro)
Application.ScreenUpdating = True