Está en la página 1de 5

14 formas de acelerar y optimizar tus macros excel

Esta informacin es muy til para quienes manejen el tema de programacin de macros
excel. Tus macros van lentas? Problemas a la ora de ejecutarlas? !u"les son las
t#cnicas recomendadas?
!uando de programacin de macros excel se trata$ el tema de la eficiencia y la
velocidad es clave. %ay & leyes fundamentales que ay que recordar'
.
a. !uanto menos cdigo tiene una macro mejor(por qu#?
)yuda a que la macro se ejecute muco m"s r"pido
*implifica la tarea a la ora de modificar+ampliar+reparar la macro
.
b. !uanto m"s r"pido se ejecuta una macro mejor,(por qu#?
-ejora la experiencia del usuario
.o mantiene la P! ocupada tanto tiempo

/especto de usar menos cdigo depender" de las abilidades del programador excel en
cuestin. %emos visto infinidad de casos donde 01 o 21 l3neas de cdigo 45) se
pueden resumir en 6 o 7 l3neas 8algo similar pasa con las frmulas excel9. *iempre ay
macros o frmulas que acen la tarea de forma m"s directa y sin dar tantas vueltas,
:tra recomendacin clave es invertir muco tiempo inicial en planificar y anali;ar la
lgica del trabajo. Esto nos va a aorrar mucos problemas y dolores de cabe;a
posteriores,
%ay algunas instrucciones puntuales que siempre conviene usar y que van a acelerar y
optimi;ar nuestras macros en todos los casos. 4amos a ver repasar algunas t#cnicas
puntuales que podemos usar al comien;o$ durante y al final de nuestras macros.
.
)< !:-=E.>: ?E <)* -)!/:*
@. )pagar el parpadeo de pantalla
<o acemos con la instruccin' )pplication.screenupdatingABalse
Evita los movimientos de pantalla que se producen al seleccionar celdas$ ojas y libros
&. )pagar los c"lculos autom"ticos
<o acemos con la instruccin' )pplication.calculationAxl!alculation-anual
Evita que se recalcule todo cada ve; que se pegan o modifican datos
0. )pagar los eventos autom"ticos
<o acemos con la instruccin' )pplication.EnableEventsABalse
Evita que se disparen macros de evento si las ubiere
2. )pagar visuali;acin de saltos de p"gina
<o acemos con la instruccin' )ctive*eet.?isplayPage5reaCs A Balse
*irve para evitar algunos problemas de compatibilidad entre macros Excel &110 vs.
&11D+&1@1
En resumen$ siempre debemos comen;ar las macros as3'
)pplication.screenupdatingABalse
)pplication.calculationAxl!alculation-anual
)pplication.EnableEventsABalse
)ctive*eet.?isplayPage5reaCs A Balse
.
)< B=.)< ?E <)* -)!/:*
6. 5orrar contenido de portapapeles
<o acemos con la instruccin' )pplication.!ut!opy-ode A Balse
Permite limpiar el portapapeles en caso de aber copiado datos
)dem"s debemos volver a su estado original las instrucciones con las que comen;amos
la macro.
En resumen$ siempre debemos finali;ar las macros as3'
)pplication.screenupdatingATrue
)pplication.calculationAxl!alculation)utomatic
)pplication.EnableEventsATrue
)ctive*eet.?isplayPage5reaCs A True
)pplication.!ut!opy-ode A Balse
.
:T/)* TE!.=!)* ET=<E*
7. Esar la instruccin F=T%
*e usa para evitar tener que referenciar un mismo objeto mucas veces
Ejecucin leeenta(
*eets8@9./ange8G)@'>@H9.Bont.=talic A True
*eets8@9./ange8G)@'>@H9.Bont.=nterior.!olor A vb/ed
*eets8@9./ange8G)@'>@H9.-erge!ells A True

Ejecucin r"pida,
Fit *eets8@9./ange8G)@'>@H9
.Bont.=talic A True
.Bont.=nterior.!olor A vb/ed
.-erge!ells A True
End Fit
D. Evitar la instruccin *E<E!T
*e genera sobre todo en las macros grabadas
<a mayor3a de las veces no es necesario seleccionar para cumplir el objetivo
Ejecucin leeenta(
/ange8GE@H9.*elect
*election.!opy
/ange8G?@1H9.*elect
)ctive*eet.Paste

Ejecucin r"pida,
/ange8GE@H9.!opy /ange8G?@1I9
J. Evitar loops B:/ E)!%
Tener que ir celda por celda consume muco tiempo
*e puede resolver el problema de forma m"s directa,
Ejecucin leeenta(
Bor Eac cell =n /ange8G)@')@1111H9
=f cell A Empty Ten cell A 1
.ext cell
K <os loops siempre son leeentos
K En este caso recorre @1.111 celdas,
Ejecucin r"pida,
Existen diversas formas de evitar los loops. <a solucin depender" del caso concreto en
cuestin. Leneralmente se usan algunas de estas t#cnicas' agrupar$ ir a especial$ filtros$
filtros avan;ados. <a idea es poder reali;ar la accin sobre todos los elementos al
mismo tiempo$ en lugar de tener que ir uno a uno,
M. Esar las funciones nativas de Excel
.o quieras reinventar la rueda. Nui;"s ya exista una funcin Excel que lo aga,
<as macros siempre ejecutan m"s r"pido las funciones nativas de Excel
Ejecucin leeenta(
mProducto A @
Bor i A @ to @11
mProducto A mProducto K !ells80$i9
.ext
Ejecucin r"pida,
mProducto A )pplication.ForC*eetBunction.Product8/ange8G!@'!@11H99
@1. Bor;ar la declaracin de variables
En el editor 45)$ men %erramientas O :pciones O pestaPa Editor O marcar G/equerir
declaracin de variablesI
<uego usar la variable correcta' si es feca usar ?ate$ si es texto usar *tring$ si es valor
usar <ong(
Evitar el uso de la variable 4ariant ya que insume m"s recursos(
Esar nombres de variables que nos digan algo 8por ej. GEltimaBilaI o GBila>I en lugar
de GfI o GufI9
@@. Escribir las macros en mdulos y no en ojas
<as ojas pueden ser borradas o copiadas y esto generar3a problemas inesperados
@&. *eparar el proceso en varias macros 8divide y conquistar"s9
*i tu macro ace mucas cosas conviene separarla en mucas macros pequePas y luego
unirlas
Es m"s f"cil para controlar$ auditar$ etc(
)dem"s te permite luego poder reusar alguna parte del proceso en otras macros
-acro muy laaarga(
*ub -ega-acro89
Q!odigo limpia datos
R!odigo carga datos
R!digo arregla datos
R!digo arma reporte
End *ub89
-ejor dividir en diferentes macros para cada proceso
*ub <impia?atos89
Q!odigo(
End *ub *ub
!arga?atos89
Q!odigo(
End *ub
*ub )rregla?atos89
Q!odigo(
End *ub
*ub )rma/eporte89
Q!odigo(
End *ub
Binalmente podemos unir todos los procesos
*ub Proceso!ompleto89
!all <impia?atos
!all !arga?atos
!all )rregla?atos
!all )rma/eporte
End *ub89
@0. *er cuidadoso con la instruccin :. E//:/ /E*E-E .EST
Esta instruccin ace que la macro siga avan;ando aunque encuentre un error
En algunos casos esto ar" que se ignoren errores que no deber3an ser ignorados
Podr3as tener errores 8bugs9 y no enterarte,
@2. !omentar bien las macros
Nu# pasar3a si tuvieras que volver a revisar+arreglar+ampliar tu cdigo J meses
despu#s?
)Padir comentarios te ayudar" a describir y recordar la lgica y te aorrar" muco
tiempo,

También podría gustarte