Vous êtes sur la page 1sur 8

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 1 de 8

TodoExcel Soluciones para hojas Microsoft Excel Inicio Productos Manual de Funciones Manual de Macros Nuevas Funciones ddTraDa Datos y Tablas Manual Excel avanzado Servicios Clientes Contacto

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 hora de ejecutarlas? Cules son las tcnicas recomendadas? . . Cuando de programacin de macros excel se trata, el tema de la eficiencia y la velocidad es clave. Hay 2 leyes fundamentales que hay que recordar: . a. Cuanto menos cdigo tiene una macro mejorpor qu? Ayuda a que la macro se ejecute mucho ms rpido Simplifica la tarea a la hora de modificar/ampliar/reparar la macro . b. Cuanto ms rpido se ejecuta una macro mejor!por qu? Mejora la experiencia del usuario No mantiene la PC ocupada tanto tiempo

Respecto de usar menos cdigo depender de las habilidades del programador excel en cuestin. Hemos visto infinidad de casos donde 30 o 40 lneas de cdigo VBA se pueden resumir en 5 o 6 lneas (algo similar pasa con las frmulas excel). Siempre hay macros o frmulas que hacen la tarea de forma ms directa y sin dar tantas vueltas! Otra recomendacin clave es invertir mucho tiempo inicial en planificar y analizar la lgica del trabajo. Esto nos va a ahorrar muchos problemas y dolores de cabeza posteriores!

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 2 de 8

Hay algunas instrucciones puntuales que siempre conviene usar y que van a acelerar y optimizar nuestras macros en todos los casos. Vamos a ver repasar algunas tcnicas puntuales que podemos usar al comienzo, durante y al final de nuestras macros. . AL COMIENZO DE LAS MACROS . 1. Apagar el parpadeo de pantalla Lo hacemos con la instruccin: Application.screenupdating=False Evita los movimientos de pantalla que se producen al seleccionar celdas, hojas y libros 2. Apagar los clculos automticos Lo hacemos con la instruccin: Application.calculation=xlCalculationManual Evita que se recalcule todo cada vez que se pegan o modifican datos 3. Apagar los eventos automticos Lo hacemos con la instruccin: Application.EnableEvents=False Evita que se disparen macros de evento si las hubiere 4. Apagar visualizacin de saltos de pgina Lo hacemos con la instruccin: ActiveSheet.DisplayPageBreaks = False Sirve para evitar algunos problemas de compatibilidad entre macros Excel 2003 vs. 2007/2010 En resumen, siempre debemos 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 instruccin: Application.CutCopyMode = False Permite limpiar el portapapeles en caso de haber copiado datos Adems 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

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 3 de 8

. OTRAS TECNICAS UTILES 6. Usar la instruccin WITH Se usa para evitar tener que referenciar un mismo objeto muchas veces Ejecucin 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 Ejecucin rpida! With Sheets(1).Range("A1:Z1") .Font.Italic = True .Font.Interior.Color = vbRed .MergeCells = True End With 7. Evitar la instruccin SELECT Se genera sobre todo en las macros grabadas La mayora de las veces no es necesario seleccionar para cumplir el objetivo Ejecucin leeenta Range("E1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Ejecucin rpida! Range("E1").Copy Range("D10) 8. Evitar loops FOR EACH Tener que ir celda por celda consume mucho tiempo Se puede resolver el problema de forma ms directa! Ejecucin leeenta For Each cell In Range("A1:A10000") If cell = Empty Then cell = 0 Next cell * Los loops siempre son leeentos * En este caso recorre 10.000 celdas!

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 4 de 8

Ejecucin rpida! Existen diversas formas de evitar los loops. La solucin depender del caso concreto en cuestin. Generalmente se usan algunas de estas tcnicas: agrupar, ir a especial, filtros, filtros avanzados. La idea es poder realizar la accin sobre todos los elementos al mismo tiempo, en lugar de tener que ir uno a uno! 9. Usar las funciones nativas de Excel No quieras reinventar la rueda. Quizs ya exista una funcin Excel que lo haga! Las macros siempre ejecutan ms rpido las funciones nativas de Excel Ejecucin leeenta mProducto = 1 For i = 1 to 100 mProducto = mProducto * Cells(3,i) Next Ejecucin rpida! mProducto = Application.WorkSheetFunction.Product(Range("C1:C100")) 10. Forzar la declaracin de variables En el editor VBA, men Herramientas > Opciones > pestaa Editor > marcar Requerir declaracin de variables Luego usar la variable correcta: si es fecha usar Date, si es texto usar String, si es valor usar Long Evitar el uso de la variable Variant ya que insume ms recursos Usar nombres de variables que nos digan algo (por ej. UltimaFila o FilaZ en lugar de f o uf) 11. Escribir las macros en mdulos y no en hojas Las hojas pueden ser borradas o copiadas y esto generara problemas inesperados 12. Separar el proceso en varias macros (divide y conquistars) Si tu macro hace muchas cosas conviene separarla en muchas macros pequeas y luego unirlas Es ms fcil para controlar, auditar, etc Adems te permite luego poder rehusar alguna parte del proceso en otras macros Macro muy laaarga Sub MegaMacro() Codigo limpia datos Codigo carga datos Cdigo arregla datos Cdigo arma reporte End Sub() Mejor dividir en diferentes macros para cada proceso Sub LimpiaDatos() Codigo End Sub Sub

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 5 de 8

Me gusta

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 6 de 8

Martes, 13 de marzo del 2012 en 14:23 Muy buenas ideas y para que est con 5 estrellitas, me gustara que pusieran un ejemplo para el caso 8: Evitar loops FOR EACH indicando como resolveran el ejemplo que ponen de poner ceros (0) en las celdas limpias Gracias. Responder Juan Carlos Gonzlez Chavarra dice: Jueves, 15 de marzo del 2012 en 09:10 Me parece excelente estos consejos y los felicito. Consejos de este tipo son muy tiles e importantes para todos los que trabajan y aprenden macros. Muy agradecido. Responder Oscar A. Meja M. dice: Jueves, 15 de marzo del 2012 en 09:33 Excelente artculo. Tengo una duda con el punto 4. Que problemas se pueden presentar las macros entre versiones de Excel por la visualizacin de los saltos de pgina? Responder Cristian dice: Jueves, 15 de marzo del 2012 en 09:53 excelente muchas gracias por la ayuda. Responder Giovanni Rodriguez dice: Jueves, 15 de marzo del 2012 en 10:02 Excelente estos comentarios, espero se repitan, los felicito Responder Gonzalo Edgar Zambrana Rocha dice: Jueves, 15 de marzo del 2012 en 10:12 Gracias por el Articulo, buenisimo. Saludos cordiales, Gonzalo Responder Alexcy Jimenez dice: Jueves, 15 de marzo del 2012 en 10:19

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 7 de 8

Excelente aporte, como indica Francisco Castro seria bueno un ejemplo para el caso 8: Evitar loops FOR EACH. Saludos Responder jose riu dice: Jueves, 15 de marzo del 2012 en 10:22 Haria falta algun ejemplo de este caso: 8. Evitar loops FOR EACH Porque no se comprende bien de que forma/s, se pueden utilizar las instrucciones mencionadas para analizar todo un rango en lugar de recorrer las celdas de a una. Responder

Deja un comentario
Tu direccin de correo electrnico no ser publicada. Los campos necesarios estn marcados * Nombre * Correo electrnico * Web

Comentario Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title="">
<acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight=""> Publicar comentario

BUSCADOR
Enviar consulta

BOLETIN EXCEL Accede a todas nuestras descargas y recibe los mejores videos y trucos Excel gratis!

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

14 formas de acelerar y optimizar tus macros excel | TodoExcel

Pgina 8 de 8

Nombre Email
Enviar

BLOG Aplicaciones Atajos Avisos Calendarios Complementos Empresa Funciones Herramientas Macros Otras Plantillas Productos Servicios Tablas dinmicas Trucos Versiones Videos

ETIQUETAS

calendario calendario laboral 2010 cash flow cinta de opciones clave cmi complemento contabilidad contrasea cuadro de mando datos desarrollo empresas excel 2007 excel 2010 factura facturas fifa finanzas fixture flujo de caja Funciones frmulas ftbol google analytics Macros men mundial navegar hojas nuevas funciones nmero a letras office 2010 password pdf pestaas presupuesto Productos programacin punto equilibrio punto muerto ribbon
sumaproducto tablas

vba

versiones excel

Manual de Funciones Excel | Manual de Macros Excel | Nuevas Funciones Excel | Datos y Tablas Excel | Manual Excel Avanzado

http://www.todoexcel.com/14formasdeaceleraryoptimizartusmacrosexcel/?utm_source=MadMimi&...

15/03/2012

Vous aimerez peut-être aussi