VBA – Desactivar (o activar) los cálculos automáticos
In this Article
Cada vez que se actualiza el valor de una celda, Excel realiza un proceso para recalcular el libro. Cuando se trabaja directamente en Excel, se desea que esto ocurra el 99,9% de las veces (la excepción es si se trabaja con un libro de trabajo extremadamente grande). Sin embargo, esto puede ralentizar su código VBA. Es una buena práctica establecer sus cálculos en manual al principio de las macros y restaurar los cálculos al final de las macros. Si necesitas recalcular el libro, puedes decirle a Excel que calcule manualmente
Desactivar los cálculos automáticos
Puedes desactivar el cálculo automático con una macro poniéndola en xlmanual. Utilice el siguiente fragmento de código VBA:
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:
Application.Calculation = xlAutomatic
Recomiendo desactivar los cálculos automáticos al principio de su procedimiento y volver a activar los cálculos automáticos al final. Se verá así:
Ejemplo de Macro de Desactivación de Cálculos Automáticos
Sub ejemploCalculosAutomaticos()
Application.Calculation = xlManual
'Hacer algo...
Application.Calculation = xlAutomatic
End Sub
Cálculo Manual
Cuando los cálculos automáticos están desactivados, puede utilizar el comando Calcular para forzar a Excel a recalcular:
Calculate
También puedes decirle a Excel que recalcule sólo una hoja de cálculo individual:
Worksheets("hoja1").Calculate
También puede decirle a VBA que recalcule sólo 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:
Sub ejemploCalcularManualmente()
Application.Calculation = xlManual
'Hacer algo...
'Recalcular
Calculate
'Hacer más procesos
Application.Calculation = xlAutomatic
End Sub
Ajustes de VBA – Acelerar el código
Si su objetivo es acelerar su código, también debería considerar ajustar estas otras configuraciones:
Desactivar Screenupdating puede hacer una gran diferencia en la velocidad:
Application.ScreenUpdating = False
Desactivarla barra de estado también hará una pequeña diferencia:
Application.DisplayStatusBar = False
Si su libro de trabajo contiene eventos, también debería desactivar los eventos al inicio de sus procedimientos (para acelerar el código y evitar bucles interminables):
Application.EnableEvents = False
Por último, su código VBA puede ralentizarse cuando Excel intenta recalcular los saltos de página (Nota: no todos los procedimientos se verán afectados). Para desactivar DisplayPageBreaks utilice esta línea de código:
ActiveSheet.DisplayPageBreaks = False
La codificación VBA es fácil
Deje de buscar código VBA en línea. Aprenda más sobre AutoMacro – Un generador de código VBA que permite a los principiantes codificar procedimientos desde cero con un mínimo conocimiento de codificación y con muchas características que ahorran tiempo a todos los usuarios