VBA Calculate – Calcular ahora, libro, hoja o rango.

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on febrero 22, 2022

Este tutorial le enseñará todas las diferentes opciones de cálculo en VBA.

Por defecto, Excel calcula todos los libros abiertos cada vez que se realiza un cambio en el libro. Lo hace siguiendo un árbol de cálculo en el que si se cambia la celda A1, se actualizan todas las celdas que dependen de la celda A1 y así sucesivamente. Sin embargo, esto puede hacer que su código VBA se ejecute con extrema lentitud, ya que cada vez que una celda cambia, Excel debe volver a calcular.

Para aumentar la velocidad de su VBA, a menudo querrá desactivar los cálculos automáticos al principio de sus procedimientos:

Application.Calculation = xlManual

y volver a activarlo al final:

Application.Calculation = xlAutomatic

Sin embargo, ¿qué pasa si quieres calcular todos (o parte) de tus libros de trabajo dentro de tu procedimiento? El resto de este tutorial le enseñará lo que debe hacer.

Calcular ahora

Puedes utilizar el comando Calculate para recalcular todo (en todos los libros de trabajo abiertos):

Calculate

Este suele ser el mejor método a utilizar. Sin embargo, también puedes realizar cálculos más limitados para mejorar la velocidad.

Calcular sólo la hoja

También puedes decirle a VBA que calcule sólo una hoja específica.

Este código recalculará la hoja activa:

ActiveSheet.Calculate

Este código recalculará la Hoja1:

Sheets("Hoja1").Calculate

Calcular rango

Si necesitas un cálculo más limitado, puedes decirle a VBA que calcule sólo un rango de celdas:

Sheets("Hoja1").Range("a1:a10").Calculate

Calcular fórmula individual

Este código calculará sólo una fórmula de celda individual:

Range("a1").Calculate

Calcular libro de trabajo

No hay una opción de VBA para calcular sólo un libro de trabajo completo. Si necesita calcular todo un libro de trabajo, la mejor opción es utilizar el comando Calcular:

Calculate

Esto calculará todos los libros de trabajo abiertos. Si estás realmente preocupado por la velocidad, y quieres calcular un libro de trabajo completo, podrías ser más selectivo sobre qué libros de trabajo están abiertos a la vez.

Calcular libro de trabajo – Métodos que no funcionan

Hay un par de métodos que puede estar tentado a utilizar para forzar a VBA a calcular sólo un libro de trabajo, sin embargo ninguno de ellos funcionará correctamente. Este código hará un bucle a través de cada hoja de trabajo en el libro de trabajo y recalculará las hojas una a la vez:

Sub RecalcularLibro()
    Dim libro As Worksheet
    
    For Each libro In Worksheets
        libro.Calculate
    Next libro 
End Sub

Este código funcionará bien si todas sus hojas de trabajo son «autocontenidas», es decir, si ninguna de sus hojas contiene cálculos que hagan referencia a otras hojas.

Sin embargo, si sus hojas de trabajo hacen referencia a otras hojas, sus cálculos podrían no actualizarse correctamente. Por ejemplo, si calcula la Hoja1 antes que la Hoja2, pero las fórmulas de la Hoja1 se basan en cálculos realizados en la Hoja2, entonces sus fórmulas no contendrán los valores más actualizados.

También puedes intentar seleccionar todas las hojas a la vez y calcular la hoja activa:

ThisWorkbook.Sheets.Select
ActiveSheet.Calculate

Sin embargo, esto causará el mismo problema.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!
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