Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MACRO: Una macro es un conjunto de instrucciones escritas en lenguaje Visual Basic (*),
que nos permite automatizar ciertas tareas que la aplicacin no contempla.
Por ejemplo, si necesitamos que se inserten automticamente 2 hojas nuevas al abrir un libro,
recurriremos a una macro.
Otros casos: si se debe completar alguna tarea cada vez que ingresamos cierto valor en una
celda o rango de celdas, si se debe realizar un cierto control antes de imprimir, guardar o cerrar
el libro, son todas tareas que pueden ser automatizadas mediante rutinas o macros.
Cmo se crea una macro: para automatizar una tarea mediante una macro bsicamente
se necesitan los siguientes elementos:
1- un espacio de trabajo donde escribir las instrucciones o rutinas que harn esas
tareas: el Editor de Macros. A este espacio se accede desde men Herramientas,
Macros, Editor o con el atajo de teclado Alt+F11.
a- alguno de los objetos (hoja o libro) que seleccionemos con doble clic en el panel de
Objetos que se encuentra a la izquierda del Editor.
b- insertando mdulos
c- o insertando formularios personales o Userforms.
2- una accin que har que la tarea programada se ejecute. A esto llamamos 'Eventos' que
inician una macro y pueden ser: abrir o cerrar un libro, entrar o salir de una hoja, cambios o
seleccin de celdas, antes de imprimir o guardar, el 'clic' en un botn de comando, al presionar
un atajo de teclado, y otros ms.
4- Ocasionalmente un formulario donde trabajar para luego volcar los resultados en las hojas:
llamados Userforms.
Dnde colocar o escribir la macro: esto depender de lo que deba ejecutar nuestra
rutina.
Si las instrucciones se deben ejecutar, por ejemplo, al abrir o cerrar un libro, se colocan en el
objeto ThisWorkbook (o EsteLibro segn la versin).
Si las instrucciones se deben ejecutar al entrar o salir de una hoja o al seleccionar o modificar
una celda, se colocan en el objeto Hoja. Estos objetos se encuentran en el margen izquierdo
del Editor, en la ventana Proyecto-VBAProyect
Si nuestra rutina ser llamada con un botn, atajo de teclado o desde otra rutina, se colocar
en un mdulo (estando en el Editor, men Insertar, Mdulo).
Cmo ejecutar una macro: En el punto anterior se menciona que se necesita una
'accin' que dispare o ejecute una macro grabada.
1- Una accin automtica resultado de un evento, ya sea a nivel libro, hoja, rango o celda
En este grupo se encuentran las rutinas que se ejecutan en la apertura o cierre de libro,
al entrar o salir de una hoja, al seleccionar o cambiar valores en celda
2- Al presionar un botn dibujado en la hoja. Podemos utilizar botones de la barra de
Herramientas 'Cuadro de controles' o de la barra 'Formularios'.
2- Dibujamos el control en la hoja, ajustamos algunas propiedades como texto, tamao,
ubicacin. Al hacer clic derecho sobre el control optamos por 'Ver cdigo' o 'Asignar
macro' segn qu barra de herramientas hemos utilizado.
a- Cuadro de controles: al optar por 'Ver cdigo' nos llevar al Editor donde se
generar automticamente una rutina con estas 2 instrucciones:
Sub nombre_rutina()
'nuestras instrucciones
End Sub
3- Ejecutar un atajo de teclado: En estos casos tendremos una rutina como la del punto
anterior (b) en un mdulo del Editor.
Desde la hoja Excel, men Herramientas, Macros, Macros seleccionarla de la lista. Presionar
el botn 'Avanzadas' e ingresar una letra, por ejemplo 't' (sin las comillas)
Nota: Si Excel ya tiene asignada esta letra la reemplazar por Ctrl+Maysc +t Esto significa
que en el momento que necesitemos que la macro se ejecute presionaremos juntas las teclas
Ctrl + t (o Ctrl+Mayusc+t)
Referencias: Veamos los trminos utilizados para referirnos a libros, hojas y celdas:
Workbook : Libro de trabajo.
En esta seccin aparecern algunas de las instrucciones 'bsicas' para utilizar con LIBROS.
Una vez copiada en el Editor, colocar el cursor sobre la palabra en negrita y presionar F1 para
acceder a la Ayuda Excel. All se encontrarn ms explicaciones y ejemplos para esa
instruccin.
Estas son algunas de las opciones. Si se omiten, escribir la coma, como en el siguiente
ejemplo:
ActiveWorkbook.SaveAs Filename:="C:\Mis doc\Libro.xls",,,
ReadOnlyRecommended:=False
7-No mostrar aviso al salir, al eliminar hoja, o cualquier aviso que queremos omitir:
Application.DisplayAlerts= False 'volverla a True al finalizar la macro
3-Datos de la hoja:
ActiveSheet.Name 'nombre de la hoja
ActiveSheet.Index 'nmero de hoja
Reemplazar PrintOut por PrintPreview para realizar solo una vista preliminar.
En esta seccin aparecern algunas de las instrucciones 'bsicas' para utilizar con CELDAS o
RANGOS. Una vez copiada en el Editor, colocar el cursor sobre la palabra en negrita y
presionar F1 para acceder a la Ayuda Excel. All se encontrarn ms explicaciones y ejemplos
para esa instruccin.
Range("A"&variable).Select
'selecciona la celda cuya fila ser el valor de la variable
Range(rango).Select
Range(rango).Select
Sheets(1).Range("A1").Offset(2,3).Select
'selecciona 2 filas hacia abajo y 3 col a derecha de A1 = D3
ActiveCell.Offset(-10,1).Select
'selecciona la celda que se encuentra 10 filas por encima y 1 columna a la derecha de la
celda activa.
3- Formato de celdas:
Range("B2:D10").Select
'selecciona el rango y le aplica los siguientes formatos
With Selection
.Font.Bold=True 'formato negrita .Font.Italic=True 'formato
cursiva .Font.Underline=xlUnderlineStyleSingle 'subrayado simple
.Font.Color = RGB(255,0,0)
'color de fuente (para estos valores ser rojo) .HorizontalAlignment=xlCenter
'alineacin central (Right=derecha, Left=izquierda)
End With
lugar= ActiveCell.Address
ActiveCell.Offset(0,1).Value = ActiveCell.Comment.Text
'copia el comentario de la celda activa en la celda que se encuentra en la columna siguiente.
6-Seleccionar celdas y borrarlas:
Range("B1:E1").Select
Selection.Merge
Range("B2").CurrentRegion.Select
Range("A2", Range("A2").End(xlToRight)).Select
'selecciona desde A2 hacia la derecha
Range("D2", Range("D2").End(xlToLeft)).Select
'selecciona desde D2 hacia la izquierda
Range("A20", Range("A20").End(xlUp)).Select
'selecciona desde A20 hacia arriba
Range("A2").End(xlDown).Select
Nota: Esta instruccin dar error si la celda A3 se encuentra vaca. Es preferible en ese
caso realizar la bsqueda de 'abajo hacia arriba', con:
Range("A65536").End(xlup).Select
Range("A2").End(xlDown).Row + 1 'o
Range("A65536").End(xlup).Row + 1
Dim i as Byte
Dim hoja as Worksheet
For i=1 to 5
Msgbox WorkSheets(i).Name
Next
'Se recorre la col A a partir de la fila 2 hasta encontrar una celda vaca.
'El valor de cada celda se incrementa en 1
Range("A2").Select
While Activecell.Value <> ""
ActiveCell.Value = ActiveCell.Value + 1
Wend
a. Botn de formulario: se asigna una macro, como la del ejemplo, que previamente se
escribi en un mdulo en el Editor de Visual Basic. Ejemplo:
Sub mostrando ()
UserForm1.Show 'nombre del Userform que se desea mostrar
End Sub
b. Botn del Cuadro de controles: una vez dibujado en la hoja, clic derecho, opcin Ver
cdigo y escribir la rutina (sta se habilita en la hoja donde aparecer el control).
Ejemplo:
TextBox1.Value = "CANCELADO"
TextBox2 = Sheets("Hoja3").Range("A5").Value
TextBox2 = Range("C1").Value + Range("C2").Value