Desactivar (o activar) los cálculos automáticos - Ejemplos de código VBA

Siempre que actualiza un valor de celda, Excel pasa por un proceso para volver a calcular el libro. Cuando trabaja directamente en Excel, desea que esto suceda el 99,9% del tiempo (la excepción es si está trabajando con un libro de trabajo extremadamente grande). Sin embargo, esto realmente puede ralentizar su código VBA. Es una buena práctica configurar los cálculos en manual al comienzo de las macros y restaurar los cálculos al final de las macros. Si necesita volver a calcular el libro de trabajo, puede decirle manualmente a Excel que lo calcule.

Desactivar cálculos automáticos

Puede desactivar el cálculo automático con una macro configurándolo en xlmanual. Utilice la siguiente pieza de código VBA:

1 Application.Calculation = xlManual

Volver a activar los cálculos automáticos

Para volver a activar el cálculo automático con la configuración xlAutomatic:

1 Application.Calculation = xlAutomatic

Recomiendo deshabilitar los cálculos automáticos al principio de su procedimiento y volver a habilitar los cálculos automáticos al final. Se verá así:

Deshabilitar el ejemplo de macro de cálculos automáticos

12345678 Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Hacer algoApplication.Calculation = xlAutomaticEnd Sub

Cálculo manual

Cuando los cálculos automáticos están deshabilitados, puede usar el Calcular comando para forzar a Excel a recalcular:

1 Calcular

También puede decirle a Excel que vuelva a calcular solo una hoja de trabajo individual:

1 Hojas de trabajo ("hoja1"). Calcular

También puede decirle a VBA que vuelva a calcular solo un rango (haga clic para leer nuestro artículo sobre los métodos de cálculo de VBA)

Así es como podría verse esto dentro de una macro:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Hacer algo'RecalcCalcular'Haz más cosasApplication.Calculation = xlAutomaticEnd Sub

Configuración de VBA - Código de aceleración

Si su objetivo es acelerar su código, también debería considerar ajustar estas otras configuraciones:

Desactivar la actualización de pantalla puede marcar una gran diferencia en la velocidad:

1 Application.ScreenUpdating = Falso

Apagar la barra de estado también marcará una pequeña diferencia:

1 Application.DisplayStatusBar = False

Si su libro de trabajo contiene eventos, también debe desactivar los eventos al comienzo de sus procedimientos (¡para acelerar el código y evitar bucles interminables!):

1 Application.EnableEvents = False

Por último, su código VBA puede ralentizarse cuando Excel intenta volver a calcular los saltos de página (Nota: no todos los procedimientos se verán afectados). Para desactivar DisplayPageBreaks, use esta línea de código:

1 ActiveSheet.DisplayPageBreaks = Falso

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave