Juan Garcés

Personal Blog

Macros en Microsoft Excel

enero 17th, 2013

Formas de Crear una Macro

 

Forma Automática

 

Grabar Nueva Macro

La forma automática (por llamarla de alguna forma) corresponde a lo que en el menú se denomina “Grabar nueva macro…” (como podemos ver en la figura 4) y corresponde a un procedimiento en el cual, al seleccionar la opción en el menú, se comienzan a interpretar cada una de las operaciones que realiza el usuario en forma de instrucciones de programación.  Estas instrucciones son escritas en un módulo dentro del libro que puede ser visualizado desde el Editor de Visual Basic.
tutmac_4

 Figura 4:  Muestra la opción de Grabar nueva macro

 

Como se mencionó anteriormente, veremos todo el proceso de aprendizaje por medio de ejemplos, para lo cual realizaremos la siguientes macros:

a.      Poner números en Negrita, cursiva, justificada y con signo de pesos.

b.      Combinar celdas, ajustar celdas y justificar el contenido en forma horizontal.

c.      Poner bordes y sombreados al área seleccionada.

d.      Insertar una nueva hoja de cálculo con un formato de celda de número con signo de pesos en toda la hoja.

 

Ejemplos de Macros Automáticas

a.      Poner números en Negrita, cursiva, justificada y con signo de pesos.

Para comenzar, debemos seleccionar la opción que presentamos en la figura 4, a lo cual aparecerá una ventana como la de la figura 5 en la cual deberemos indicar el nombre de la macro y algunos datos de su creación.

tutmac_5Figura 5: Creación de una nueva macro

 

Como podemos observar en la imagen 5, el nombre de la macro no puede contener espacios en él.  En la opción “Guardar macro en:”  debemos seleccionar “Este libro”, lo que hará que el módulo con nuestra macro se guarde en nuestro libro.  De no hacerlo, la macro quedará almacenada  en el Libro de Macros Personal, con lo cual podremos usar la macro con cualquier otro documento.  Por último, podemos seleccionar un “Método de abreviado”, lo cual es un poco complicado, ya que la mayor parte del teclado está ya asignado a alguna operación como poner negrita, centrar, etc.  Pero si logras hallar alguna que no te produzca problemas puedes ponerla en la casilla que aparece junto a CTRL +.

Prosiguiendo, por lo general, luego de presionar en “Aceptar” aparece una barra de herramientas que contiene un botón con el cual podremos detener la grabación de la macro, como se muestra en la figura 6.  Pero si no aparece esta barra basta con seleccionar la opción “Detener Grabación” como se muestra en la figura 7.

tutmac_6Figura 6: Barra en la cual se presenta el botón de Detener Grabación

 

Comencemos a realizar las tareas que requerimos para el ejercicio.  Sólo debemos seleccionar el formato especificado para el ejercicio y finalmente seleccionar la opción para detener la grabación, con lo cual ya tendremos nuestros pasos grabados en el módulo respectivo, como podemos apreciar en la figura 8 y figura 9.

tutmac_7Figura 7:  Se muestra la opción que permite detener la grabación de la macro

 

tutmac_8Figura 8: Muestra como poner el formato a la celda que esta seleccionada

 

Como podemos ver en la figura 8 se presenta cómo se establece el formato de la celda que esta seleccionada, pero hay algo muy importante que destacar y es que no se debe seleccionar la celda después de comenzar a grabar la macro, es decir, no se debe seleccionar ninguna celda, sólo se debe aplicar el formato y eso es todo.  Esto es porque de seleccionarse una celda, ésta quedará enlazada con la macro y no la podremos reutilizar en cualquier otra celda de la hoja.  Más adelante explicaremos algo más de este problema.

Veamos a continuación cómo ha quedado nuestra macro en el código de Visual Basic que se presenta en la figura 10.  Para ello debemos seleccionar la opción “Editor de Visual Basic” en el menú Herramientas sub-menú Macro, como se muestra en la figura 9.

tutmac_9Figura 9:  Muestra la opción para acceder al Editor de Visual Basic

 

tutmac_10Figura 10:  Muestra el contenido de la macro Ejercicio1

 

Ahora veamos, línea por línea que significado tiene el código anterior.

Sub Ejercicio1()   Indica el inicio de la Macro, con el nombre que hemos indicado en la ventana de la figura 5.

 

‘ Ejercicio1 Macro

‘ Macro grabada el 09-08-03 por Juan Garcés Bustamante

 

El texto anterior (que se encuentra con un apóstrofe al inicio de cada línea y generalmente en color verde)  es un comentario y no es interpretado como código válido que realice alguna operación, sólo está ahí como una explicación de la macro.  Podemos poner este tipo de comentarios en cualquier lugar del código de la macro.

 

    Selection.Font.Bold = True                                 Pone el texto de la celda o celdas seleccionadas  en Negrita.

    Selection.Font.Italic = True                                 Pone el texto de la celda o celdas seleccionadas en Cursiva.

    Selection.NumberFormat = «$ #,##0»                  Da el formato de signo de pesos.

With Selection

La instrucción With nos permite que podamos escribir en forma abreviada las instrucciones que sigan.  Por ejemplo, como se ve, podemos escribir

.HorizontalAlignment = xlJustify

en lugar de

Selection.HorizontalAlignment = xlJustify

y lo mismo ocurre con las demás sentencias que le siguen.  Ambas significan lo mismo, es sólo la comodidad de omitir la palabra Selection.

        .HorizontalAlignment = xlJustify               > permite poner alineación justificada en forma horizontal.

        .VerticalAlignment = xlBottom                  > permite poner alineación inferior en forma vertical.

        .WrapText = False                > Permite ajustar el texto en la celda.

        .Orientation = 0                    > Orientación del texto.

        .ShrinkToFit = False             > Reducir hasta ajustar en falso.

        .MergeCells = False             > Combinar celdas en falso.

    End With              > Fin del bloque donde podemos usar la abreviatura.

End Sub                   > Fin de la macro.

 

A continuación veremos la utilidad de esta macro, ya que este es el verdadero fin de las macros.

Por ejemplo, primero seleccionemos un rango de celdas en el cual hayamos escrito alguno valores.

tutmac_11Figura 11: Selección de valores para prueba

Ejecutar una Macro

Y ahora ejecutemos nuestra macro, seleccionándola desde la ventana que se muestra en la figura 12 y presionando posteriormente el botón Ejecutar.  Esta operación es precedida por la selección de la opción “Macros” en el menú Herramientas sub-menú Macro.

tutmac_12Figura 12:  Ejecución de la Macro Ejercicio1

 

Luego de la ejecución de nuestra macro podremos apreciar que el rango de celdas seleccionado ha tomado el formato que hemos grabado en la macro.  Veamos en la figura 13 cómo han quedado estas celdas.

tutmac_13Figura 13:  Muestra las celdas luego de ejecutarse la macro Ejercicio1

 

Como podemos ver, el formato que grabamos en la Macro se ha aplicado a nuestro rango de celdas seleccionado, sin importar si era texto o número el que contenía la celda o si ésta estaba vacía, sólo se aplicó el formato.  Además, podemos asegurar que este formato se aplicará sin problemas a cualquier  rango de celdas que seleccionemos.

Ejercicios Prácticos

Combinar celdas, ajustar celdas y justificar el contenido en forma horizontal.

 

Ejercitación para el lector.

Resultado:

Sub Ejercicio2()

‘ Ejercicio2 Macro

‘ Macro grabada el 09-08-03 por Juan Garcés Bustamante

With Selection

.HorizontalAlignment = xlJustify

.VerticalAlignment = xlBottom

.WrapText = True

.Orientation = 0

.ShrinkToFit = False

.MergeCells = True

End With

End Sub

 

c.      Poner bordes y sombreados al área seleccionada.

 

Ejercitación para el lector.

Resultado:

 

Sub Ejercicio3()

‘ Macro8 Macro

‘ Macro grabada el 09-08-03 por Juan Garcés Bustamante

 

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlDouble

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Interior

.ColorIndex = 15

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

End With

End Sub

d.      Insertar una nueva hoja de cálculo con un formato de celda de número con signo de pesos en toda la hoja.

 

Ejercitación para el lector.

Resultado:

 

Sub Ejercicio4()

‘ Ejercicio4 Macro

‘ Macro grabada el 09-08-03 por Juan Garcés Bustamante

 

Sheets.Add

Cells.Select

Selection.NumberFormat = «$ #,##0»

End Sub

 

Juan Garcés

Personal Blog