13 de febrero de 2008

El editor de macros de Excel

Continúa de la nota anterior.

Para verificar la ejecución de nuestra macro, primero eliminamos los formatos que aplicamos a la celda C6 (o no tendría sentido ejecutarla), y la ejecutamos desde el cuadro de diálogo Macro, visto en la previa nota. De esta manera, veremos que la celda C6 cambia su color de fondo a rojo y el de fuente a blanco. Hasta ahora todo va bién.

Sin embargo, si seleccionáramos otra celda o celdas y ejecutáramos la macro para cambiarles el formato, veríamos que esto no funciona: los formatos se aplicarán siempre a la celda C6 (y sólo en el libro que grabamos la macro). Esto es así ya que en el proceso de grabación de la macro incluímos la selección de la celda C6. Entonces, ¿cómo podemos hacer para darle más flexibilidad a la macro, de forma que aplique los formatos sobre cualquier celda o celdas seleccionadas?

Para lograrlo, necesitamos editar el código de nuestra macro. Y para acceder a este, necesitamos recurrir al Editor de macros de Excel. Ejecutamos el cuadro de diálogo Macro y presionamos el botón Modificar... El editor tiene una apariencia similar a esta:

En la pantalla principal podemos ver el nombre de la macro, su descripción y el código de la misma (puede variar un poco con el que tengan ustedes). Cada vez que ejecutamos una macro, Excel "lee" su código asociado y lo ejecuta línea por línea, siguiendo una lógica absolutamente exacta e implacable. El código del ejemplo es el siguiente:

Sub Macro2()
'
' Macro2 Macro
' Cambia el color de celda a rojo y el color de texto a blanco
'
Range("C6").Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 2
End Sub

Intentemos comprender qué es lo que significa cada línea antes de continuar...

Como vemos, el código incluye la selección de C6 en la primera línea. Entonces, como no queremos que la macro seleccione C6, sino simplemente que aplique formatos, eliminamos la primera línea del código (¡sí, con Supr!), quedando como sigue:

Sub Macro2()
'
' Macro2 Macro
' Cambia el color de celda a rojo y el color de texto a blanco

With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
Selection.Font.ColorIndex = 2
End Sub

Ahora, volvemos a Excel. Selecionamos cualquier rango de celdas y ejecutamos la macro.

Si hemos hecho la edición correctamente,veremos que el proceso ahora es más flexible, ya que aplica los formatos en cualquier selección activa, no sólo en C6.

En futuras notas emplearemos más tiempo (mucho más) al estudio del Editor de macros y a la redacción de macros.

1 comentario:

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Excel, Excel 2003, Excel 2007 y el logo XL son marcas registradas de Microsoft Corporation.