VBA Calculate – Calcular ahora, libro, hoja o rango.
In this Article
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!Learn More!