Método de cálculo manual

La siguiente pequeña subrutina que os presentamos nos puede ayudar en nuestro día a día de la programación en VBA. Esta subrutina cambia del método de cálculo en el que se encuentre al método de cálculo manual con VBA, después obliga a hacer los cálculos antes de terminar la subrutina y finalmente vuelve a poner el método de cálculo en el que se encontraba previamente.

Esto puede hacernos ahorrar mucho tiempo si no necesitamos de los cálculos de Excel durante las operaciones que estemos llevando a cabo (que creo que es lo normal).

En mi caso, hice esto en una subrutina donde tenía que copiar información de varios libros a un libro principal. Además, en este libro principal tenía varias funciones que yo había creado y que estaban ralentizando la copia de información… el resultado, la siguiente macro.

Cambiar a método de cálculo manual en VBA

Public Sub MI_RUTINA()

Dim calc_mode As Variant

calc_mode = Application.Calculation
Application.Calculation = xlCalculationManual

Call subrutina_que_quiero_ejecutar

Application.Calculate
Application.Calculation = calc_mode

End Sub

Como ya te habrás fijado, aquí el truquillo consiste en guardar el método de cálculo en el que se encontraba la hoja en la variable calc_mode para luego restaurarlo y dejarlo en el mismo estado en el que se encontraba.

Un poco de teoría

Antes de terminar,  hablemos un poco de manera general de la propiedad CALCULATION que es parte del objeto APPLICATION. Si ya en Excel es poco conocida en VBA es una “rara avis” que de vez en cuando tenemos que usar con libros especialmente complicados.

La teoría es que Excel, por defecto, está siempre recalculando el contenido de un libro de Excel. Estos recalculos son, normalmente, muy rápidos e imperceptibles, pero en libros de Excel con varias hojas y muchas filas de cálculos puede que tengamos algunos problemas en cuanto al tiempo de procesado.

Para evitar estos problemas, lo único que tendremos que hacer ne Excel es cambiar las opciones de cálculo en la pestaña “Fórmulas” en el grupo “Cálculo”. Si no estás familiarizado con esto, te animo a que le des un par de vueltas a este asunto.

En cualquier caso, las posibilidades que tenemos en VBA para este elemento son dos:

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationSemiautomatic
Application.Calculation = xlCalculationAutomatic

Cada una de las cuales, se entiende bien, nos permite evitar/aplicar cálculos automáticos. La única un poco más complicada es xlCalculationSemiautomatic. Esta propiedad hace que se recalculen todas las celdas menos las de las tablas (normalmente grandes listados).

(Visited 21.754 times, 1 visits today)
Categorías VBA

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies