You are on page 1of 12

Cdula jurdica 3-101-430312

PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

1
Macros
Descripcin
Una macro, abreviatura de macroinstrucciones, son varias instrucciones que forman parte
de un mismo grupo y se ejecutan de forma consecutiva, esto puede ser muy til para
abreviar tareas repetitivas o crear procedimientos automticos para usuarios sin
experiencia.
Excel tiene soporte para la creacin y ejecucin de macros en un lenguaje llamado Visual
Basic para Aplicaciones VBA, sin embargo, como se ver ms adelante, no es necesario
un conocer este lenguaje para trabajar con macros, claro est que el comprenderlo
expandir las posibilidades y le permitir obtener mejores y ms complejos resultados.
El objetivo de esta parte del curso es que el participante comprenda el funcionamiento de
la macros y se familiarice con algunas instrucciones por ello se utilizarn ejemplos
simples, dndole as las bases para que con el tiempo y la experiencia derivada de su
uso, explore las ilimitadas opciones que ofrece Excel con este lenguaje y le permita
elaborar tareas complejas.
Seguridad
Las posibilidades con las macros son tan amplias que es posible crear instrucciones
maliciosas capaces de hacer dao a los archivos, a la aplicacin e inclusive al sistema,
estos son lo virus de macro.
Las macros se guardan junto con los libros y como es posible hacer que al abrir el libro se
ejecute la macro que lo acompaa Excel ofrece cuatro niveles de seguridad como medida
de proteccin contra virus.
El nivel predeterminado de seguridad es Alto que deshabilita las que no estn firmadas
digitalmente, incluyendo nuestras propias macros. Para continuar con el curso, men
Herramientas, Macro opcin seguridad. Marque el nivel Medio. A partir de este
momento cuando se abre cualquier libro que contenga macros Excel har una advertencia
de seguridad preguntando si desea o no habilitar las macros del libro.

Imagen 1 Advertencia de seguridad con macros
ADVERTENCIA
Solo habilite macros cuando tenga plena seguridad del origen del libro, tambin es
recomendable tener instalado un antivirus y mantenerlo actualizado. Nunca establezca el
nivel de seguridad en Bajo.

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

2
NOTA
El control de opciones de seguridad y formatos vara entre las versiones de Excel 2003-
2010, consulte a instructor(a).
Crear una macro en Excel
Men Herramientas, Macro Grabar nueva macro, aparecer este cuadro de dilogo:

Imagen 2 Grabar macro
En Nombre de la macro, escriba un nombre con letras, nmeros o guin bajo _ y sin
espacios. No use referencias de celda, como A1, por ejemplo primera_macro.
En mtodo abreviado Puede asignar una combinacin de teclas (CTRL+ letra) para
ejecutar la macro tambin puede usar CTRL+ MAYS + letra. Si usa combinaciones
predeterminadas, el mtodo abreviado las reemplazar mientras est abierto el libro que
contiene la macro, por ejemplo CTRL+G, que es guardar, que no funcionar como tal si es
asignada a una macro.
Guardar macro en, permite seleccionar el libro en el se guardar la macro. Es posible
hacer que la macro se pueda utilizar siempre que est en Excel, para ello seleccione
Libro de macros personal.
En Descripcin es recomendable incluir alguna informacin sobre la macro
La hacer clic en Aceptar aparece una barra de herramientas y en la Barra de Estado
aparecer la palabra Grabando
Detener
grabacin
Referencia
Relativa

Imagen 3 Barra de herramientas Detener grabacin


Imagen 4 Barra de estado mientras se graba una macro

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

3
Todas las acciones que ejecute en Excel se irn almacenando en lenguaje VBA. Para
nuestro ejemplo seleccione desde la celda B2 hasta la D10 y ponga color de relleno
verde. Pulse el botn Detener grabacin. (Ver Imagen 3).
Ejecutar macro
Ubquese en una hoja que no sea en la que grab la macro, en el men Herramientas,
Macro opcin Macros (Alt+F8), en el cuadro de dilogo seleccione la macro y de un clic
en el botn ejecutar. Notar como el rango B2:D10 tiene fondo verde. Ejecute la macro
en otras hojas y el resultado ser el mismo.
Referencias absolutas y relativas
Por ejemplo, se necesita cambiar el color a cuatro celdas pero no en la misma posicin, o
sea que la macro debe ejecutarse con relacin a la posicin de la celda activa sin importar
su referencia actual.
Inicie la grabacin de una nueva macro y pngale como nombre prueba_de_relativa.
Haga clic en el botn Referencias relativas (ver Imagen 3). Partiendo de LA CELDA
ACTIVA seleccione 4 celdas, dos filas por dos columnas, y ponga color de relleno azul.
Detenga la grabacin
Ejecute esta macro en diferentes lugares de la hoja y notar como la macro cambia el
color de cuatro celdas partiendo de la celda activa.
La macro anterior se limita a cuatro celdas, inicie la grabacin de una macro y llmela
Poner_Verde. No haga clic en ninguna celda, solo ponga color de relleno verde y
detenga la grabacin. Seleccione un rango y ejecute la macro. Prubela varias veces
seleccionado diferentes rangos.
Asignar macros a botones
Abra el libro que contiene las macros. Men Ver, Barras de herramientas opcin
Personalizar. Seleccione la ficha Comandos

Imagen 5 Personalizar barras de herramientas.
En Categoras seleccione Macros. Arrastre personalizar botn al lugar de la barra de
herramientas que desee. Con el botn seleccionado haga clic en Modificar seleccin,

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

4
Asignar macro y seleccione la macro para ese botn, tambin puede usar le men
contextual sobre el botn. Cierre el cuadro personalizar.
Ahora cuando haga clic en el botn que asign, se ejecutar la macro. Si el libro que la
contiene est cerrado, Excel lo abrir. Existen muchas opciones que podr personalizar
cuando est modificando un botn, por ejemplo, cambiar la imagen del botn o
modificarla.Para eliminar le botn estando en Personalizar barra de herramientas
arrastre el botn fuera de la barra, el puntero del Mouse se ver como la Imagen 6.


Imagen 6 Mouse al eliminar botn
Libere el Mouse con lo que eliminar el botn.
Modificar macro
Abra el cuadro de dilogo de ejecutar macro, seleccione la macro que se ve a modificar y
haga clic en el botn Modificar. Esto le llevar a la ventana Microsoft Visual Basic.

Imagen 7 Ventana de Visual Basic
Las macros se almacenan en mdulos mostrados en el rbol del panel izquierdo, en el
panel derecho se mostrarn las macros con su cdigo. La estructura de una macro es
esta:



Sub poner_verde()
'

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

5
' poner_verde Macro
' Macro grabada el 10/12/2004 por CNC
'

'
Cdigo de la macro
Cdigo de la macro
Cdigo de la macro

End Sub


Sub indica el nombre y el inicio de la macro, puede cambiar el nombre de la macro
observando las recomendaciones explicadas anteriormente.
Las lneas que inician con el carcter comilla sencilla ' se vern de color verde, estos son
comentarios y no se ejecutan, pueden ir en cualquier lugar del cdigo y no afectan la
macro. Se recomienda documentar algn procedimiento en particular con el fin de hacer
ms fcil una revisin posterior. (En los ejemplos que se presentan aqu se eliminarn los
comentarios)
La macro finaliza con la sentencia End Sub.
Inicie la grabacin de una macro y como nombre ponga prueba_modificar. Verifique que
referencia relativa est desactivado, ponga color verde el rango B2:B9 y detenga la
grabacin. En el cuadro de dilogo Macro (Alt. +F8) seleccinela y haga clic en
Modificar, el cdigo ser:

Sub prueba_modificar()
'
' poner_verde Macro
' Macro grabada el 10/12/2004 por CNC
'

'
Range("B2:B9").Select
With Selection.Interior
.ColorIndex = 10
.Pattern = xlSolid
End With
End Sub

Range("B2:B9").Select : Selecciona las celdas
With Selection.Interior: Indica que se modificar el interior de la seleccin en las
siguientes lneas
ColorIndex = 10: pone color a la seleccin, los colores estn numerados, el verde es 10.
Pattern = xlSolid: Indica que la trama es slida, ntese que aunque esta propiedad no se
cambi durante la grabacin, Excel la incluye ya que est relacionada con el fondo de la
celda. Si esta propiedad en particular no se desea modificar mediante la macro, esta lnea
se podr eliminar, ver Eliminar cdigo , pgina 6
End With: Cierra la sentencia With indicando que hasta la lnea anterior se efectan los
cambios al interior de la seleccin.


Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

6
Suponga se necesita ampliar el rango, cambie B9 por D9, regrese a Excel y ejecute
nuevamente la macro.
Otro caso, se modificar la macro para que cambie el color a las celdas seleccionadas
antes de ejecutar la macro sin importar su posicin. Ponga el carcter ' antes de Range o
elimine la lnea. Haciendo diferentes selecciones ejecute la macro varias veces.
Otra modificacin, cambie el 10 por un 6 y pruebe la macro.
Eliminar cdigo innecesario
Al grabar una macro muchos de los parmetros de cada opcin se graban an cuando no
estos no sean modificados. Inicie la grabacin de una macro, como nombre LaFuente.
Cambie la fuente a Comic Sans, el cdigo ser:

Sub Lafuente()
With Selection.Font
.Name = "Comic Sans MS"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End Sub

La sentencia With se usa para simplificar el cdigo modificando varias propiedades de
Selecction.Font al mismo tiempo, el siguiente cdigo tiene un efecto idntico al anterior
pero sin usar With por eso hay mencionar el objeto Selecction.Font cada vez que se le
cambia una propiedad:

Sub Lafuente()
Selection.Font.Name = "Comic Sans MS"
Selection.Font.Size = 11
Selection.Font.Strikethrough = False
Selection.Font.Superscript = False
Selection.Font.Subscript = False
Selection.Font.OutlineFont = False
Selection.Font.Shadow = False
Selection.Font.Underline = xlUnderlineStyleNone
Selection.Font.ColorIndex = xlAutomatic
End Sub

Cambie el cdigo y verifique la macro
Por otro lado, aunque lo nico que se desea cambiar es la fuente otras propiedades como
tamao y color tambin quedaron registradas, en tal caso se pueden eliminar y el cdigo
quedara as:

Sub Lafuente4()
Selection.Font.Name = "Comic Sans MS"

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

7
End Sub

Cambie el cdigo y verifique la macro
Moverse por la hoja
Ubquese en la celda B2, inicie la grabacin de macro, como nombre ponga bajar,
verifique que Referencia relativa (Imagen 3, pgina 2), est desactivado de un enter y
detenga la grabacin. Esta accin genera:

Range("B3").Select

No importa donde se ubique est lnea le llevar a ala celda B3.

Grabe una nueva macro con el nombre Bajar_relativo, active el botn Referencias
relativas (ver Imagen 3) en la pgina 2, al igual que en la macro anterior de un enter y
detenga la grabacin. El cdigo ser:

ActiveCell.Offset(1, 0).Range("A1").Select

Offset indica que el desplazamiento se hace con relacin a la celda activa, 1 fila hacia
abajo 0 columnas a la derecha.
Mezclar cdigo
Es posible copiar y pegar cdigo para que una sola macro ejecute mas instrucciones de
las incluidas cuando fue creada, por ejemplo copie lo que est dentro del With de
prueba_modificar despus de la macro anterior, quedara as:

Sub bajar_relativo()
ActiveCell.Offset(1, 0).Range("A1").Select
With Selection.Interior
.ColorIndex = 10
.Pattern = xlSolid
End With
End sub

Ejectela en diferentes lugares de la hoja y ver como pone color verde a la celda inferior
de la celda activa.
Variables
Una variable es un espacio de la memoria en donde se almacena un dato cuyo valor,
como su nombre lo dice, puede variar durante la ejecucin de la macro. Para incluirla se
escribe el nombre y se le asigna un valor. El nombre puede ser en maysculas o
minsculas, pero debe cumplir con los mismos requisitos de los nombres de macro, sin
espacios, sin caracteres especiales etc. Tampoco se pueden usar palabras clave, es decir
instrucciones de VBA como Select, End, With etc. Ejemplo, antes del cdigo anterior
escriba MiColor=10 y reemplace el 10 por la variable MiColor. La macro quedara as:

Sub bajar_relativo()
MiColor= 10
ActiveCell.Offset(1, 0).Range("A1").Select

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

8
With Selection.Interior
.ColorIndex = MiColor
.Pattern = xlSolid
End With
End sub

Sentencias de control
Es muy comn que necesite que una secuencia se repita un nmero determinado de
veces, con el ejemplo que venimos trabajando, suponga que desea cambiar el color a 15
celdas, esto implicara llamar la macro 15 veces lo que no tendra sentido. Para esto
existen varias instrucciones, una de ellas es la instruccin FOR. Agregue la siguientes
lneas al comienzo y final:

Sub bajar_relativo()
For i = 1 To 15
MiColor= 10
ActiveCell.Offset(1, 0).Range("A1").Select
With Selection.Interior
.ColorIndex = MiColor
.Pattern = xlSolid
End With
Next i
End Sub

Ejecute la macro que ahora cambiar el color a 15 celdas de la hoja. Esta instruccin
ejecuta todo lo que est entre FOR y NEXT as:
i es una variable, se puede poner cualquier nmero
= 1, le angina un valor inicial de 1
To 15 hasta 15, es decir se ejecutar hasta que i sea igual a 15
La instruccin recorre y ejecuta todo el cdigo desde FOR hasta encontrar Next i quien
incrementa la variable i en una unidad, ahora i vale 2, y regresa a la lnea que dice FOR
Cuando llega nuevamente a Next i nuevamente se incrementa una unidad y la variable i
ahora vale 3, saltando nuevamente a la lnea FOR
As suceder hasta que i sea igual a 15, cuando esto ocurre se sale continuando la
ejecucin con lo que est despus de despus de Next i. En nuestro ejemplo es End
Sub, o sea el fin de la macro.
Cuadros de mensajes
VBA tiene varios medios de interactuar con el usuario que ejecuta la macro, uno de ellos
es el cuadro de mensajes. Agregue la siguiente lnea al final del cdigo anterior (antes de
End Sub, por supuesto!)

r = MsgBox("Mensaje", , "Ttulo")

Ejecute la macro y al finalizar aparecer este mensaje:


Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

9

Imagen 8 Cuadro de mensaje

Modifique el cdigo poniendo el cuadro de mensajes antes del next y modificando sus
parmetros as:

Sub bajar_relativo()
For i = 1 To 15
MiColor = 10
ActiveCell.Offset(1, 0).Range("A1").Select
With Selection.Interior
.ColorIndex = MiColor
.Pattern = xlSolid
End With
r = MsgBox(i, , "este es valor de i")
Next i
End Sub

Ejecute la macro. Ntese que i no tiene comillas, esto es por que queremos mostrar el
valor de la variable. Si se pone entre comillas VBA muestra la letra i no su contenido,
comprubelo.
Uso de la variable de un FOR dentro del cdigo
Modifique la macro anterior y el MsgBox para que quede as:

Sub bajar_relativo()
For MiColor = 1 To 50
ActiveCell.Offset(1, 0).Range("A1").Select
With Selection.Interior
.ColorIndex = MiColor
.Pattern = xlSolid
End With
Next MiColor
r = MsgBox("Termin la macro", , "Listo")
End Sub


Aqu se va incrementando MiColor en cada ejecucin con lo que se obtienen 50 colores,
uno por cada valor de MiColor
Mensajes de error
Cambie 50 por 70 y ejecute la macro. Recibir un mensaje indicndole que se produjo un
error ya que Excel solo dispone de 56 colores para el interior de la celdas. Tampoco se
ejecut la lnea del MsgBox por que el error se present antes de esta lnea.


Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

10

Imagen 9 Mensaje de error

Si se pulsa Finalizar se detiene la ejecucin, Depurar nos enva a la ventana de Visual
Basic indicando la lnea que gener el error. Esto puede resultar til mientras se elabora y
revisa un macro, pero puede causar problemas a un usuario sin experiencia.
VBA tiene diferentes formas de controlar errores, la que estudiaremos hace que cuando
se presenta un error en alguna lnea continu con la siguiente instruccin. Agregue esta
lnea

Sub bajar_relativo()
On Error Resume Next
For MiColor = 1 To 70
ActiveCell.Offset(1, 0).Range("A1").Select
With Selection.Interior
.ColorIndex = MiColor
.Pattern = xlSolid
End With
Next MiColor
r = MsgBox("Termin la macro", , "Listo")
End Sub
Detener macros en ejecucin
Suponga que usa una sentencia FOR o cualquier otra que repita instrucciones hasta que
se de una condicin pero por descuido o error en al elaborar la macro dicha condicin no
se d. VBA se pegara pues no llegara a End Sub. En tal caso use Ctrl + pausa para
detener la macro. Ejecute la macro anterior, cuando salga el cuadro de mensaje pulse Ctrl
+ pausa. Tendr la opcin de detener la macro.
Escribir datos en las celdas
Inicie la grabacin de una nueva macro, como nombre Escribiendo. En cualquier celda
escriba prueba, de enter y detenga la grabacin. Este ser el cdigo creado:

Sub Escribiendo()
ActiveCell.FormulaR1C1 = "prueba"
Range("B3").Select
End Sub

La instruccin que aqu nos interesa es ActiveCell.FormulaR1C1 =" que es la que se
introduce datos en una celda. Elimine la lnea RangeSelect y agregue las siguientes:


Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

11
Sub Escribiendo()
For y = 1 To 20
ActiveCell.FormulaR1C1 = "prueba"
ActiveCell.Offset(1, 0).Range("A1").Select
Next y
End Sub

Pruebe la macro
Entrada de datos
Hasta ahora la macros se han ejecutado con informacin contenida en las mismas,
veremos el caso en el cual se pregunta un dato al usuario con InputBox. Modifique la
macro anterior as:

Sub Escribiendo()
veces = InputBox("digite un nmero,"Cuntas veces desea
el texto?)
For y = 1 To veces
ActiveCell.FormulaR1C1 = "prueba"
ActiveCell.Offset(1, 0).Range("A1").Select
Next y
End Sub

Al ejecutar la macro se obtendr este cuadro:


Imagen 10 InputBox

Digite un nmero y haga clic en aceptar. La sentencia FOR se ejecutar el nmero de
veces indicadas en el cuadro de entrada. Si se digitan caracteres diferentes a nmeros se
genera un error ya que el tipo de datos esperados es numrico.
InputBox tambin se puede usar para datos de cadenas de texto. Modifique la macro as:

Sub Escribiendo()
veces = InputBox("digite un nmero", "Cuntas veces desea
el texto?")
eltexto = InputBox("digite un texto", "Qu quiere escribir
en las celdas?")
For y = 1 To veces
ActiveCell.FormulaR1C1 = eltexto
ActiveCell.Offset(1, 0).Range("A1").Select
Next y

Cdula jurdica 3-101-430312
PORQUE EL CONOCIMIENTO
HACE TRIUNFADORES
Tel. 22 21 01 16 - 2258 4211
visite: cursos.cr
cursos@racsa.co.cr

12
End Sub

Al ejecutar la macro se preguntarn el nmero de veces y el texto en cada cuadro.
Leer datos de las celdas
Digite el siguiente cdigo:

Sub leer()
f = ActiveCell.Formula
MsgBox (f)
End Sub

En una celda escriba ejemplo y ejecute la macro, el cuadro de mensaje mostrar el
contenido de la celda.

Imagen 11 Leer datos de una celda

Eliminar macro
En el men Herramientas, Macro opcin Macros (Alt+F8), clic en la macro que se va
a eliminar, clic en el botn Eliminar y conformar la accin.
Si la macro se encuentra en el libro de macros personal no podr ser eliminada por que
libro est oculto, primero en le men Ventana, Mostrar. Seleccione personal, elimine
la macro, use Ocultar del men Ventana y cierre Excel, guarde los cambios. El mismo
procedimiento aplica para editar la macros del libro personal.

En la ventana de VBA ubquese en la palabra clave, por ejemplo FOR, con F1 aparecer
la ayuda respecto a ese comando, para algunos hay un ejemplo que es un programa
completo. Cpielo y pguelo dentro del cdigo, le ser muy til para entender el
funcionamiento de muchas sentencias.
Enve un correo a su instructor(a), adjunte el libro con la macro y los archivos
relacionados. Incluya una descripcin detallada del problema y lo que desea obtener.

You might also like