Académique Documents
Professionnel Documents
Culture Documents
Las macros hacen que sea muy fcil automatizar tareas repetitivas en Excel, pero la forma en la que son creadas y las facilidades para utilizarlas a veces son problemticas. Por suerte, Excel es flexible lo suficientemente como para que pueda solucionar esos problemas y crear nuevas caractersticas con un mnimo esfuerzo.
Uno de los inconvenientes de las macros grabadas en Excel es que el cdigo producido es a menudo muy ineficiente. Esto puede significar que las macros que deberan tardar solamente unos segundos para completarse a veces requieren de mucho ms tiempo y parecen muy ineficaces. Adems, cuando crea macros utilizando la grabadora de macros, todas las pulsaciones de teclas se graban, independientemente de que tengan o no sentido. Esto quiere decir que sigue cometiendo un error y que a continuacin lc corrige, las pulsaciones requeridas para completar esas acciones tambin son grabadas en el cdigo de la macro. Si ya ha jugado algo con macros y cdigo en VBA, probablemente habr odo hablar de la propiedad application. ScreenUpdating. Si estableceesta propiedad a False al inicio de una macro, no solamente estar deteniendo los par-
238
Excel.Los mejorestrucos
padeos de la pantalla asociados a la macro grabada, sino que tambin estar incrementando la velocidad de ejecucin de la misma. La razn por la que este mtodo acelerar el cdigo es porque Excel ya no necesita volver a dibujar la pantalla cada vez que encuentra un comando como pueda ser select, Activate, LargeScroll, SmallScrol-J- y muchos otros. Para incluir la sentencia = False al inicio de una macro existente, Application.ScreenUpdating vaya a Herramientas>Macro>Macros, seleccione la macro en cuestin, haga clic en Modificar e introduzca el siguiente cdigo:
una Macro Macro grabada
el
L/ f2 / 20 03 por
Susana
Application.
Screenupdaling
= p1s.
'su cplco
Application. End Sub ScreenUpdating = 1'us
Observe que hemos vuelto a establecer esta propiedad a True despus de completar la macro. Aunque Excel siempre volver a activar esta propiedad tan pronto como el foco vuelva a l (es decir, cuando la macro termine y el usuario vuelva a interactuar con la aplicacin), en muchos casos es mejor asegurarse e incluir el cdigo al final. En algunos casos, se encontrar con que la propiedad Application. ScreenUpdating ha vuelto a activarse antes de que la macro grabada se haya completado. Esto puede ocurrir con macros grabadas que utilicen el comando Select con frecuencia. Y en caso de que esto suceda, puede que tenga que repetir la sentencia appl ication . ScreenUpdat ing = False en otras partes de la macro.
B
t l
El mtodo Application.onTime puede hacer que las macros se ejecutan automticamente una vez realizadas ciertas configuraciones. Supongamos que tiene una macro que desea ejecutar cada da a las 15:OO. En primer lugar deberemos determinar cmo lanzar el mtodo onTime. Podemoshacerlo utilizando el evento Workbook_Open en el mdulo privado del objeto Workbook.