Calcular VBA: ahora, libro de trabajo, hoja de trabajo o rango

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

De forma predeterminada, Excel calcula todos los libros abiertos cada vez que se realiza un cambio en el libro. Para ello, sigue 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 se ejecute su código VBA extremadamente lento, ya que cada vez que cambia una celda, Excel debe volver a calcular.

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

1 Application.Calculation = xlManual

y vuelva a habilitarlo al final:

1 Application.Calculation = xlAutomatic

Sin embargo, ¿qué sucede si desea calcular la totalidad (o parte) de sus libros de trabajo dentro de su procedimiento? El resto de este tutorial le enseñará qué hacer.

Calcular ahora

Puede usar el comando Calcular para volver a calcular todo (en todos los libros abiertos):

1 Calcular

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

Calcular solo hoja

También puede decirle a VBA que calcule solo una hoja específica.

Este código volverá a calcular la hoja activa:

1 ActiveSheet.Calculate

Este código volverá a calcular Sheet1:

1 Hojas ("Hoja1"). Calcular

Calcular rango

Si necesita un cálculo más estrecho, puede decirle a VBA que calcule solo un rango de celdas:

1 Hojas ("Hoja1"). Rango ("a1: a10"). Calcular

Calcular fórmula individual

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

1 Rango ("a1"). Calcular

Calcular libro de trabajo

No hay una opción de VBA para calcular solo un libro completo. Si necesita calcular un libro completo, la mejor opción es usar el comando Calcular:

1 Calcular

Esto calculará todos los libros abiertos. Si está realmente preocupado por la velocidad y desea calcular un libro de trabajo completo, es posible que pueda ser más selectivo acerca de 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 podría tener la tentación de usar para forzar a VBA a calcular solo un libro de trabajo, sin embargo, ninguno de ellos funcionará correctamente.

Este código recorrerá cada hoja de trabajo en el libro de trabajo y volverá a calcular las hojas una a la vez:

1234567 Sub Recalculate_Workbook ()Dim ws como hoja de trabajoPara cada ws en hojas de trabajows.CalcularSiguiente wsEnd Sub

Este código funcionará bien si todas sus hojas de trabajo son "independientes", lo que significa que ninguna de sus hojas contiene cálculos que se refieran a otras hojas.

Sin embargo, si sus hojas de trabajo se refieren a otras hojas, es posible que sus cálculos no se actualicen correctamente. Por ejemplo, si calcula Sheet1 antes de Sheet2, pero las fórmulas de Sheet1 se basan en cálculos realizados en Sheet2, sus fórmulas no contendrán los valores más actualizados.

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

12 ThisWorkbook.Sheets.SelectActiveSheet.Calculate

Sin embargo, esto provocará el mismo problema.

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

wave wave wave wave wave