VBA – Desactivar (o activar) los cálculos automáticos

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 22, 2022

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

 

activar desactivar calculos automaticos

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 alt text

Más información

vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples