Algunas consideraciones importantes que tenemos que tener al editar o crear una macro en excel en el lenguajes VBA son los parametros que colocaremos al principio y al final, estos indicarán de que forma se procesarán los códigos y pueden ahorrarnos: tiempo, errores, pausas innecesarias o ayudar a evitar que terceros vean el proceso que se realiza.
Al INICIO:
1. Apagar el parpadeo de pantalla
Lo hacemos con la instrucción: Application.screenupdating=False
Evita los movimientos de pantalla que se producen al seleccionar celdas, hojas y libros
2. Apagar los cálculos automáticos
Lo hacemos con la instrucción: Application.calculation=xlCalculationManual
Evita que se recalcule todo cada vez que se pegan o modifican datos
3. Apagar los eventos automáticos
Lo hacemos con la instrucción: Application.EnableEvents=False
Evita que se disparen macros de evento si las hubiere
4. Apagar visualización de saltos de página
Lo hacemos con la instrucción: ActiveSheet.DisplayPageBreaks = False
Sirve para evitar algunos problemas de compatibilidad entre macros Excel 2003 vs. 2007/2010
Siempre comenzar las macros así:
Application.screenupdating=False
Application.calculation=xlCalculationManual
Application.EnableEvents=False
ActiveSheet.DisplayPageBreaks = False
.
AL FINAL DE LAS MACROS
5. Borrar contenido de portapapeles
Lo hacemos con la instrucción: Application.CutCopyMode = False
Permite limpiar el portapapeles en caso de haber copiado datos
Además debemos volver a su estado original las instrucciones con las que comenzamos la macro.
En resumen, siempre debemos finalizar las macros así:
Application.screenupdating=True
Application.calculation=xlCalculationAutomatic
Application.EnableEvents=True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False
.
OTRAS TECNICAS UTILES
6. Usar la instrucción WITH
Se usa para evitar tener que referenciar un mismo objeto muchas veces
Ejecución leeenta…
Sheets(1).Range(“A1:Z1”).Font.Italic = True
Sheets(1).Range(“A1:Z1”).Font.Interior.Color = vbRed
Sheets(1).Range(“A1:Z1”).MergeCells = True
Ejecución rápida!
With Sheets(1).Range(“A1:Z1”)
.Font.Italic = True
.Font.Interior.Color = vbRed
.MergeCells = True
End With