Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Algunos trucos para optimizar macros en Excel

| 7 comentarios

Al trabajar con macros sencillas (generalmente de pocas líneas), su ejecución no es complicada, por lo que puede trabajarse simplemente grabando una macro desde Excel, o creando la macro directamente en Visual Basic, detallando paso a paso lo que hará la macro. Al hacer esto, el código que se genera es bastante detallado y en algunos casos, contiene más líneas de las que realmente son necesarias para hacer que la macro realice aquello que se desea.

Sin embargo, cuando la macro es más complicada, es útil conocer ciertos "trucos" que podrían reducir las líneas en la macro, permitiendo que su ejecución y revisión sea más rápida.

1) Deshabilitar el cálculo automático

Cuando se tienen muchas celdas con fórmulas, cada vez que se realiza un cambio en los valores de una hoja, Excel recalcula los valores  de todas las fórmulas. Para evitar esto, se puede insertar un código, que hace que los cálculos se realicen al final de la ejecución de la macro, acelerando la misma.

Al inicio de la macro, luego del Sub NombreMacro se coloca el siguiente código:   Application.Calculation = xlCalculationManual

Y al final de la macro antes del End Sub, colocamos:

Application.Calculation = xlCalculationAutomatic
Application.Calculate

2) No agregar la selección de la celda como un paso más, de no ser necesario.

Se podría trabajar de la siguiente manera:

Range ("A1").Select
ActiveCell.FormulaR1C1 = "Hola"
Range("A1").Select
Selection.Font.Bold = True

O reducir la cantidad de líneas, trabajando así:

Range("A1").Value = "Hola"
Range("A1").Font Bold = True

3) Utilizar With... End With para no hacer referencia al mismo objeto o comando varias veces.

Esto:

Sheets(Hoja1).Range(“A1″).Font.Bold = True
Sheets(Hoja1).Range(“A1″).Font.Color = RGB(125,125,80)
Sheets(Hoja1).Range(“A1″).Font.Underline= True

Puede ser reemplazado por esto:

With Sheets(Hoja1).Range("A1").Font
.Bold = True
.Color = RGB(125, 125, 80)
.Underline = True
End With

4) No utilizar palabras reservadas: Para esto, lo más conveniente es no utilizar palabras en inglés, así no se corre el riesgo de estar utilizando una palabra reservada.

5) Declarar las variables

Si bien podemos declarar todas las variables como Variant, esto produce una mayor demora al ejecutar la macro. Es preferible declarar la variable según corresponda (si es fecha, usar Date, si es texto, usar String).

6) Comentar de manera adecuada las macros

De esta forma se podrá recordar con claridad que hace cada macro y se podrá contar con los comentarios que facilitarán la utilización de la macro por terceras personas, que podrían no estar tan familiarizadas con su sintaxis.

7) Si se desea que la macro ejecute una gran cantidad de tareas, es preferible crear varias macros más pequeñas y luego mediante una nueva macro, llamarlas para unir todos los procesos. Esto puede ser útil incluso, si en algún momento se desea omitir alguno de los procesos, no es necesario crear una macro enteramente nueva, sino que basta con no llamar a la macro que se desea omitir.

Por ejemplo:

Sub BorrarDatos()
código...
End Sub

Sub InsertarData()
código...
End Sub

Sub DarFormato()
código...
End Sub

Sub ProcesoCompleto()
BorrarDatos
InsertarData
DarFormato
End Sub

En caso se desee un proceso que solo borre datos e inserte data, pero sin dar formato, bastará con omitir la última línea de la macro ProcesoCompleto.

Elaborado por: Verónica Serpa

7 comentarios

Deja una respuesta

Los campos requeridos estan marcados con *.