You are on page 1of 13

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

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! 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. .
1 de 13 16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-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 . OTRAS TECNICAS UTILES 6. Usar la instruccin WITH Se usa para evitar tener que referenciar un mismo objeto muchas veces

2 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

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! 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

3 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

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 CargaDatos() Codigo End Sub Sub ArreglaDatos() Codigo End Sub Sub ArmaReporte() Codigo End Sub

4 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

Finalmente podemos unir todos los procesos Sub ProcesoCompleto() Call LimpiaDatos Call CargaDatos Call ArreglaDatos Call ArmaReporte End Sub()

13. Ser cuidadoso con la instruccin ON ERROR RESUME NEXT Esta instruccin hace que la macro siga avanzando aunque encuentre un error En algunos casos esto har que se ignoren errores que no deberan ser ignorados Podras tener errores (bugs) y no enterarte! 14. Comentar bien las macros Qu pasara si tuvieras que volver a revisar/arreglar/ampliar tu cdigo 8 meses despus? Aadir comentarios te ayudar a describir y recordar la lgica y te ahorrar mucho tiempo!

Comparte tus propias tcnicas para acelerar y optimizar macros! Djanos tus comentarios!

.
Me gusta 10 Twittear 9 2 20

38 respuestas a 14 formas de acelerar y optimizar tus macros excel Francisco Castro Prez dice: 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 Csar Portales Alonso dice: Jueves, 15 de marzo del 2012 en 13:01 Hola. El siguiente cdigo pone a 0 todas las celdas en blanco que haya en la regin actual de la celda a1. Lo puedes obtener incluso con la grabadora de macros Range(a1).select activecell.currentregion.select

5 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = 0 O mucho mejor en una sola instruccin siguiendo el consejo del artculo Range(a1).CurrentRegion.SpecialCells(xlCellTypeBlanks).value=0 Si quieres hacerlo con grabadora de macros: -Sitate en la celda A1 - Pulsa Ctrl+* para seleccionar la regin actual -Pulsa F5 (comando Ir a),botn Especial y selecciona Celdas en blanco, con lo cual tendrs seleccionadas todas las celdas vacas. -Teclea un 0 ( o lo que quieras escribir) -Pulsa Ctrl+Intro para que lo que acabas de teclear (el 0 o lo que sea) te lo escriba en todas las celdas seleccionadas Un saludo 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

6 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

Responder Alexcy Jimenez dice: Jueves, 15 de marzo del 2012 en 10:19 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 Oscar Marn dice: Jueves, 15 de marzo del 2012 en 10:43 Muy buen post! Son consejos que algunas veces conocemos, pero que pasamos por alto. Responder ivigras dice: Jueves, 15 de marzo del 2012 en 11:18 Excelente aporte, Gracias Responder Eleazar Enrique Lozano Garca dice: Jueves, 15 de marzo del 2012 en 11:19 Muy interesante y gracias por compartir el conocimiento los hace grandes. Responder deybis dice: Jueves, 15 de marzo del 2012 en 11:30 Saludos, muy bueno el aporte , pero podrian dar ejemplos de como evitarlo o hacerlo mas eficiente Responder NORMAN CORDERO dice: Jueves, 15 de marzo del 2012 en 11:34 Excelentes consejos, de hecho ya aplique los de apagar y encender algunas caracteristicas y se ejecuta mas rapido mi macro. Muchas gracias Saludos cordiales Norman Cordero

7 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

Responder Jose Manuel Peralta dice: Jueves, 15 de marzo del 2012 en 11:45 Muchas gracias e aprendido mucho con esta informacin Responder rolando dice: Jueves, 15 de marzo del 2012 en 12:19 se le agradece mucho me sirvio en mi excel Responder Roberto Gmez dice: Jueves, 15 de marzo del 2012 en 12:37 Gracias por la gua. Me ser muy til Responder Csar Portales dice: Jueves, 15 de marzo del 2012 en 13:18 Hola. como veo que ms de un usuario ha pedido ejemplos sobre el tema de evitar lo del bucle For each, aqu os dejo un ejemplo que ha pedido un forero sobre cmo poner un 0 en todas las celdas en blanco de un rango. El siguiente cdigo pone a 0 todas las celdas en blanco que haya en la regin actual de la celda a1. Lo puedes obtener incluso con la grabadora de macros Range(a1).select activecell.currentregion.select selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = 0 O mucho mejor en una sola instruccin siguiendo el consejo del artculo Range(a1).CurrentRegion.SpecialCells(xlCellTypeBlanks).value=0 Si quieres hacerlo con grabadora de macros: -Sitate en la celda A1 - Pulsa Ctrl+* para seleccionar la regin actual -Pulsa F5 (comando Ir a),botn Especial y selecciona Celdas en blanco, con lo cual tendrs seleccionadas todas las celdas vacas. -Teclea un 0 ( o lo que quieras escribir) -Pulsa Ctrl+Intro para que lo que acabas de teclear (el 0 o lo que sea) te lo escriba en todas las celdas seleccionadas Un saludo Responder Sergio A Campos H dice: Jueves, 15 de marzo del 2012 en 13:22 El ao pasado publiqu mi propia lista de tips para programar macros en Excel, la cual viene en Ver

8 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

Blog Los tips tambin incluyen maneras de ser ms claro para el usuario final. Como: a) Si las macros vendrn en un add-in, realiza una rutina que te detecte archivos abierto y no se ejecuta si no encuentra ninguno. b) Haz uso de eventos de manera correcta. c) Sin necesidad de reinventar la rueda, haz uso de los cuadros de dilogo propio de Excel. Con Application.Dialogs (Dilogo). Entre otras . Responder Manuel Cordero S dice: Jueves, 15 de marzo del 2012 en 13:30 Muchas gracias, muy til Responder JOSE CASTILLO PEREZ dice: Jueves, 15 de marzo del 2012 en 13:33 Excelente, cada da se aprende un poco mas. gracias. te felicito por el aporte Responder Rocio Rodrguez dice: Jueves, 15 de marzo del 2012 en 13:45 Excelente!!! gracias por la informacin Responder SEBA dice: Jueves, 15 de marzo del 2012 en 14:52 Buenisimo!!!, justo lo que andaba buscando. Gracias por compartir! saludos Responder Pedro Diaz dice: Jueves, 15 de marzo del 2012 en 15:19 Muy bueno, deberan enviar ms seguidos estas pildoritas de conocimiento exceliano. Responder LUIS FERNANDO MONSALVE C dice: Jueves, 15 de marzo del 2012 en 16:48 Excelente este aporte sobre macros, por favor continuar publicando esta ayudas que son muy interesantes y nos ayudan con nuestro trabajo diario. Felicitaciones y muchos exitos. Responder Martin Cruz dice: Jueves, 15 de marzo del 2012 en 17:37
9 de 13 16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

De verdad, muy buenos, algunos ya los aplicaba pero otro no. Muchas gracias por el aporte. Responder Javier Pantpja dice: Jueves, 15 de marzo del 2012 en 17:42 Excelente informacion, gracias por compartir esta valiosa informaciom. El acero viene en barras Saludos desde Sahagun, Cordoba , Colombia Responder Jose Redondo dice: Jueves, 15 de marzo del 2012 en 18:56 Muy bueno, algunos de los consejos, los he podido comprobar a lo largo del tiempo y son como magia. Otros no los he puesto en practica hasta hoy, creo que voy a empezar a revisar algunas de las macros. Un milln de gracias por los aportes. Responder RICHAR ALEXANDER dice: Jueves, 15 de marzo del 2012 en 19:20 HOLA ALGUIEN ME PODRIA AYUDAR A HACER GRAFICOS DE BARRAS PERO CON DATOS NEGATIVOS . Responder todoexcel dice: Viernes, 16 de marzo del 2012 en 07:15 Puede consultar eso en nuestros foros http://www.todoexcel.com/foro-excel Salu2.xls alejandro quiceno dice: Jueves, 15 de marzo del 2012 en 19:51 Excelente, lo de los recorridos, tal cual. El ejemplo que uso para explicarlo en mis conferencias es este: Imaginen un centimetro por cada fila de Excel. 1.048.756 filas son 10 kilometros. un archivo por ejemplo de un Kardex de 500 mil filas es una eternidad si lo tienes que organizar a punta de loops. Lo mejor es hacer el consejo que nos dice Todo Excel. Ser recursivo. Una macro que haga muchos loops en un archivo de 500 mil registros puede tardar hasta algunas horas en terminar, pero si te inventas otra manera haces el trabajo en segundos. Todo Excel d algunos tips para lograrlo. Saludos. Responder CARLOS L. GUTIERREZ dice: Jueves, 15 de marzo del 2012 en 20:54 Me interesa mucho conocer mas a cerca de estos consejos y aportes de conocimiento que en la practica favorecen mucho al trabajo. Responder

10 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

Roberto dice: Jueves, 15 de marzo del 2012 en 21:56 Excelente aporte, sirve de referencia a la hora de estar programando alguna tarea. Gracias. Responder Orlando sanabria dice: Jueves, 15 de marzo del 2012 en 22:55 Excelentes consejos, ojala se publicaran con mayor frecuencia, nos ayudarian a muchos que estamos iniciando en el mundo de las macros en excl, gracias Responder Gustavo Fierro dice: Jueves, 15 de marzo del 2012 en 22:57 Gracias,que bueno que compartan parte de sus conocimientos . Exelente gracias Responder Julian Cardona dice: Jueves, 15 de marzo del 2012 en 23:54 Que buenos estas los tips, Gracias por la informacin Responder Raul Pema dice: Viernes, 16 de marzo del 2012 en 04:03 Agradecido por la informacin, me ser til en mi quehacer diario, gracias Responder Gabriel dice: Viernes, 16 de marzo del 2012 en 04:41 Gracias por estos consejos, son basicos para quien empieza, pero fenomenales para los que hacemos macros y muchas veces olvidamos como programar. Responder

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

11 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

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="">

BUSCADOR

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

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

12 de 13

16/03/2012 07:28 a.m.

14 formas de acelerar y optimizar tus macros excel | TodoExcel

http://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros...

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

13 de 13

16/03/2012 07:28 a.m.

You might also like