You are on page 1of 10

Captulo: Cmo escribir una macro utilizando el Editor de Visual Basic

Las macros que vamos a ver a lo largo de este curso las vamos a ir programando
directamente con el Editor de Visual Basic que viene incorporado con el mismo Excel.
Para ponerlo en uncionamiento deberemos realizar los siguientes pasos:
!." #entro del men$ %erramientas " &acro deberemos escoger la opcin: Editor de
Visual Basic.
'na vez seleccionada se abrir( una nueva ventana con dos ventanas acopladas a la
izquierda. La superior es la ventana que llamamos: de Pro)ecto ) la inerior la de
Propiedades. En la primera aparecer(n los elementos que orman parte de cada Pro)ecto
*grupo de macros ) +o,as de Excel- ) la segunda son las propiedades de los ob,etos que
se pueden incorporar a nuestras macros. &(s adelante veremos como se utilizan estas
dos ventanas ) todas sus caractersticas.
Vamos a prepararnos para poder escribir nuestra primera macro
.." Escoge la opcin &dulo del men$ /nsertar.
0bserva como en la ventana superior aparece nos aparece una nueva carpeta llamada
&dulos ) en su interior un nuevo elemento llamado &dulo!. #entro de este mdulo
ser( donde guardemos las macros que creemos.
1ambi2n podr(s ver como la parte derec+a de la ventana a+ora es completamente
blanca. 3qu es donde podemos escribir las instrucciones que ormar(n parte de nuestra
&acro.
Vamos a crear una &acro ) esta nos servir( de e,emplo para ver como se deben escribir.
Crearemos una &acro mu) sencilla la cual nos servir( para que la p(gina activa pase a
ser la segunda.
4." En la p(gina en blanco de la derec+a escribe lo siguiente:
5ub Cambiarde+o,a*-
6or7s+eets*.-.3ctivate
End 5ub
El comando 5ub indica el principio de la &acro8 mientras que End 5ub marca el inal de
esta. 3 continuacin del comando 5ub +emos puesto el nombre que deseamos dar a
nuestra &acro. 0bserva como despu2s del nombre aparece un par2ntesis que se cierra )
otro que se abre.
Entre el principio ) el inal de la &acro escribimos las instrucciones que deseamos se
realicen en esta &acro.
5i deseamos guardar la &acro simplemente deberemos guardar el libro activo con el
nombre que deseamos. 3mbos elementos se guardar(n ,untos.
En la siguiente leccin veremos como podemos poner en uncionamiento una &acro
creada por nosotros.
Captulo: Cmo e,ecutar una &acro

En la leccin anterior vimos cmo podemos crear ) guardar una macro. En esta leccin
veremos cmo e,ecutarla ) ver lo que esta realiza.
Es recomendable poner el nivel de 5eguridad a 3lto8 de esta orma evitaremos que se
e,ecuten macros de libros sin nuestro permiso. El nivel de seguridad lo podremos
modiicar desde el men$: %erramientas " &acro " 5eguridad...8 escoger la opcin: 3lta.
!." 3bre el libro donde tienes guardada la &acro que creamos en la leccin anterior.
.." #espliega el men$: %erramientas " &acro
'na vez all podr(s ver como aparece un peque9o submen$.
4." 5elecciona la opcin &acros...
1e aparecer( una nueva ventana en la que podr(s ver el nombre que nosotros escribimos
detr(s del comando 5ub.
:." %az un clic sobre este nombre ) despu2s pulsa el botn E,ecutar.
La &acro se pone en uncionamiento8 podemos observar como la +ora activa pasa a ser
la segunda.
;a +emos visto como crear8 guardar ) e,ecutar &acros creadas utilizando el Editor de
Visual Basic.
3 partir de esta leccin iremos viendo peque9as &acros que realizar(n cosas mu)
concretas. Estas &acros se podr(n ir entrelazando para as poder conseguir lo que
nosotros deseamos.
Captulo: Macros con libros


3 partir de este momento vamos a ver peque9as macros que realizan tareas mu)
concretas. Para poder ver cmo uncionan simplemente tienes que copiarlas en nuestro
Editor de Visual Basic8 seg$n vimos en la primera leccin ) despu2s e,ecutarla8 seg$n
vimos en la segunda.
Vamos a ver tres &acros que traba,ar(n directamente con libros. Con ellas podremos
abrir un libro existente8 activar un libro ) por $ltimo crear un libro nuevo.
3brir un libro existente: para abrir un libro utilizaremos la siguiente &acro.
5ub 3brirLibro*-
6or7boo7s.0pen *<C:=&is documentos=E,emplo.xls<-
End 5ub
0bserva cmo entre par2ntesis ) comillas dobles +emos escrito el camino ) el nombre
del arc+ivo que deseamos abrir. Este arc+ivo debe existir8 si no uera as esta &acro nos
dara error.
3ctivar un libro )a abierto: con esta &acro podemos cambiar el libro activo. Es mu)
importante que el libro )a est2 abierto8 si no uera as8 la &acro dara error.
5ub 3CtivarLibro*-
6or7boo7s*<E,emplo.xls<-.3ctivate
End 5ub
0bserva como en esta &acro no indicamos el camino donde se encuentra el arc+ivo8 no
+ace alta )a que este debe estar abierto.
Crear un libro nuevo: con la siguiente &acro podremos crear un libro nuevo. Esta
&acro es exactamente igual que si activ(semos la opcin 3rc+ivo " >uevo.
5ub >uevoLibro*-
6or7boo7s.3dd
End 5ub
5i modiic(semos este libro despu2s Excel nos preguntara si deseamos guardar los
cambios.
Los nombres de las &acros no tienen porqu2 ser necesariamente los mismos que +emos
puesto nosotros.
Captulo: Movernos por un libro


En esta leccin veremos algunas macros que nos permitir(n mover por las celdas que
contiene un libro. Es recomendable traba,ar con libros que contengan datos para as
poder ver el eecto que la macro +ace sobre la +o,a.
Buscar el inal de una lista: podemos utilizar esta &acro para podernos situar al inal de
una lista de elementos. /nterpretaremos que el inal de la misma est( en el momento en
el que encontramos una celda vaca.
5ub ?inal*-
6+ile 3ctiveCell.Value @A <<
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
6end
End 5ub
#eberemos observar que con esta &acro siempre queda activada la primera celda que
est( en blanco despu2s de toda la lista.
Buscar el inal de una lista ) situarnos en la $ltima entrada: esta &acro es exactamente
igual que la anterior pero con la $nica dierencia que la celda activada es la $ltima
entrada de la lista.
5ub ?inalLista*-
6+ile 3ctiveCell.Value @A <<
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
6end
3ctiveCell.0set*"!8 B-.Cange*<3!<-.5elect
End 5ub
En esta &acro se realiza el bucle +asta que se encuentra la celda vaca ) despu2s
subimos una posicin para situarnos en la $ltima entrada de la tabla.
Captulo: Movernos por un libro realizando una accin

En esta leccin continuaremos con las macros que nos permiten movernos por nuestro
documento.
Buscar una entrada en una lista ) borrar toda la ila: vamos a imaginar que tenemos una
tabla de datos en la cual nos interesa buscar un elemento determinado ) borrar todos los
datos que +a) en la misma ila. Pongamos el caso que tenemos una tabla con nombre8
poblacin ) tel2ono ) deseamos buscar todos los datos de una poblacin determinada )
borrar el nombre ) la poblacin Para +acer la b$squeda deberemos situarnos en la ila
que se encuentra la poblacin.
5ub Borrar?ilas*-
6+ile 3ctiveCell.Value @A <<
/ 3ctiveCell.Value @A <Barcelona< 1+en
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
Else
5election.EntireCoD.#elete
End /
6end
End 5ub
Es importante +acer notar que si e,ecutamos esta &acro no se podr( des+acer el borrado
de las ilas que se +an eliminado con la &acro.
Buscar el inal de una lista con espacios en blanco dentro de ella: imaginemos que
tenemos una lista de datos dentro de la que +a) espacios en blanco8 como muc+o un
espacio en blanco entre dato ) dato. 5i utiliz(semos la primera macro que +emos creado
esta interpretara como inal de la lista el primer espacio en blanco que encontrara.
Cealizaremos una macro que interpretar( el inal de la lista cuando encuentre . espacios
en blanco seguidos.
5ub ?inalListaEspecial*-
5alir E <>o<
6+ile 5alir E <>o<
6+ile 3ctiveCell.Value @A <<
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
6end
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
/ 3ctiveCell.Value @A << 1+en
5alir E <>o<
Else
5alir E <5i<
End /
6end
End 5ub
Captulo: Elementos repetidos


En lecciones anteriores +emos visto cmo movernos por una lista ) cmo eliminar
algunos de ellos seg$n nos conviniera.
3+ora vamos a ver cmo podramos utilizar estas dos cosas vistas en lecciones
anteriores para poder eliminar elementos repetidos de una lista.
Eliminar elementos repetidos en una lista: vamos a realizar una macro la cual nos
va)amos desplazando por una lista8 +asta encontrar un elemento vaco e ir comprobando
si un elemento es igual al anterior8 si esto es as lo eliminaremos ) <subiremos< un lugar
la lista para que as no existan lugares vacos en la lista
El $nico requisito que +a) que cumplir para realizar esta macro es que la lista debe estar
completamente ordenada.
5ub EliminarCepetidos*-
contador E B
valor E 3ctiveCell.Value
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
6+ile 3ctiveCell.Value @A <<
/ 3ctiveCell.Value E valor 1+en
5election.#elete 5+it:Exl'p
contador E contador F !
Else
valor E 3ctiveCell.Value
3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
End /
6end
Cespuesta E &sgBox*<5e +an encontrado < G contador G < elementos repetidos<8
!8 <>$mero de repetidos<-
End 5ub
En esta macro estamos utilizando una variable llamada contador la cual nos servir( para
contabilizar el n$mero de elementos repetidos que encontramos en la lista. Este valor lo
mostramos al inalizar la macro.
Captulo: Macro - Comparacin entre columnas

En las lecciones anteriores +emos visto como eliminar elementos repetidos existentes
en una misma ila. En este e,emplo realizaremos comparaciones entre dierentes
columnas8 eliminando de la primera los elementos que existan en la segunda.
En la primera columna est(n todos los elementos que orman parte de la lista ) en la
segunda columna se van colocando los elementos que se desean buscar para eliminar de
la primera.
3 continuacin escribiremos la macro completa ) despu2s explicaremos que realiza
cada una de las lneas. El n$mero que aparece al principio de cada una de las lneas nos
servir( como gua en la explicacin8 no debes copiarlos en el Editor.
! 5ub Cepetidos*-
. Cange*<B!<-.5elect
4 Posicion E !
: 6+ile 3ctiveCell.Value @A <<
H valorcomparacion E 3ctiveCell.Value
I Cange*<a!<-.5elect
J 5alir E <no<
K 6+ile 3ctiveCell.Value @A << 3nd 5alir E <no<
L / 3ctiveCell.Value E valorcomparacion 1+en
!B respuesta E &sgBox*<M#eseas borrar esta entradaN<8 :8 <OOEncontradoPP<-
!! / respuesta E vb;es 1+en
!. 5election.#elete 5+it:Exl'p
!4 End /
!: 5alir E <si<
!H Else
!I 3ctiveCell.0set*!8 B-.Cange*<3!<-.5elect
!J End /
!K 6end
!L Posicion E Posicion F !
.B Cange*<b!<-.5elect
.! 3ctiveCell.0set*Posicion " !8 B-.Cange*<a!<-.5elect
.. 6end
.4 End 5ub
3ntes de realizar la explicacin tenemos que de,ar mu) claro que la columna 38 ser(
donde tenemos todos los datos de nuestra lista ) la columna B8 los datos que deseamos
buscar ) eliminar de la primera columna.
Captulo: Macro Comparacin entre columnas - Explicacin primeros pasos


En esta leccin realizaremos la explicacin paso a paso de la macro que +emos escrito
anteriormente para la comparacin entre dos columnas.
Lnea .: con esta instruccin nos situamos en la primera celda de la columna B para
empezar a buscar los datos que deseamos borrar.
Lnea 4: creamos una variable llamada Posicin para controlar en que ila nos
encontramos de la segunda columna
Lnea :: aqu creamos un bucle que se repetir( +asta que no se terminen los elementos a
buscar.
Lnea H: creamos una variable llamada valorcomparacion con la que traba,aremos para
ir comparando los elementos de la primera ) segunda columna. El valor de la celda en la
que nos encontramos en la columna B8 pasa a estar en la variable valorcomparacion.
Lnea I: cambiamos a la columna 3 para iniciar el proceso de comparacin.
Lnea J: creamos una nueva variable llamada 5alir con la que controlaremos si debemos
salir del bucle o no. 5olamente saldremos en el momento en el que se encuentre un
elemento que est( en la segunda ) primera columna.
Lnea K: aqu iniciamos un bucle que se repetir( +asta que se llegue al inal de la
primera columna8 *caso que se dar( cuando no existan elementos comunes- o +asta que
se encuentre un elemento com$n8 *esto nos lo indicar( la variable 5alir-.
Lnea L: en esta lnea preguntaremos si la celda en la que nos encontramos *primera
columna- es igual que el valor que tenemos dentro de la variable: valorcomparacion.
Lnea !B: si se +a producido la coincidencia de elementos procedemos a preguntar si
realmente deseamos borrar este elemento.
Lnea !!: miramos si la respuesta del usuario +a sido airmativa.
5eguiremos la explicacin paso a paso en la siguiente leccin.
Captulo: Macro Comparacin entre columnas - Explicacin ltimos pasos


En esta leccin continuaremos con la explicacin paso a paso de la macro que +emos
realizado para crear una comparacin entre columnas.
Lnea !.: si el usuario contesta airmativamente eliminamos la celda ) desplazamos la
lista +aca arriba8 de esta orma no tenemos +uecos en medio de la lista.
Lnea !4: terminamos la estructura 5i que +emos iniciado en la lnea !!.
Lnea !:: como se +a localizado un elemento coincidente pondremos la variable 5alir
con valor 5i.
Lnea !H: aqu empezamos el caso en el que el valor que tenemos seleccionado en la
primera columna con el valor de la variable valorcomparacion no sea coincidente.
Lnea !I: si no coinciden los datos lo que +acemos es avanzar una posicin dentro de la
primera columna.
Lnea !J: aqu terminamos la estructura / iniciada en la lnea L.
Lnea !K: terminamos el bucle iniciado en la lnea K.
Lnea !L: incrementamos en uno el valor de la variable Posicion )a que estamos
avanzando una posicin dentro de la segunda columna.
Lnea .B: pasamos a la segunda columna para continuar con la comparacin de los
elementos.
Lnea .!: avanzamos en la segunda columna tantas veces como se nos indique en la
variable Posicion para iniciar nuevamente el proceso de comparacin entre los
elementos de ambas columnas.
Lnea ..: terminamos el bucle principal de esta macro.
Lnea .4: terminamos la macro.
Esta macro es bastante completa8 os recomendamos repasarla cuantas veces cre(is
oportunas +asta que quede completamente clara. >o +ace alta que entend(is
completamente las instrucciones8 pero s cu(l es su uncin. Para probar la macro
simplemente deber2is copiar una serie de elementos en la primera columna ) en la
segunda poner algunos de los elementos que est(n en la primera.
Captulo: Barra de herramientas personalizada


%asta esta leccin +emos visto cmo copiar8 guardar ) poner en uncionamiento una
macro utilizando el men$ de +erramientas %erramientas " &acro.
En muc+as ocasiones puede ser que tengamos una macro la cual necesitemos poner en
uncionamiento muc+as veces con lo que el +ec+o de abrir el men$ ) buscar dic+a
macro nos puede ser un poco engorroso.
En esta leccin vamos a ver una orma de crear una nueva barra de +erramientas en la
que pondremos un botn para que al pulsarlo se ponga en uncionamiento la macro.
Explicaremos los pasos necesarios para conseguir esto.
Crear una barra de +erramientas nueva
!." 3brir el men$ Ver " Barras de +erramientas ) seleccionar la opcin: Personalizar.
3 continuacin aparecer( una nueva ventana llamada: Personalizar.
.." #e esta ventana pulsar sobre el botn: >ueva...
>os aparecer( una ventana llamada: >ueva barra de +erramientas en la que deberemos
especiicar el nombre que le deseamos dar a nuestra barra para poderla dierenciar del
resto.
4." Para nuestro e,emplo podramos poner como nombre: &is macros.
:." 3 continuacin pulsar 3ceptar.
Podremos observar como en la lista de barras de +erramientas disponibles aparece el
nombre que acabamos de poner. 3 la derec+a del nombre aparecer( una indicacin
conorme esta barra est( visible. 5i no la ves puedes mover la ventana Personalizar.
3+ora )a tenemos nuestra nueva barra de +erramientas creada. En la siguiente leccin
aprenderemos cmo podemos crear un botn dentro de esta barra para que al pulsarlo se
e,ecute una de nuestras macros.
Captulo: Crear botones en la barra de herramientas personalizada

En la leccin anterior +emos visto cmo crear una barra de +erramientas personalizada
para colocar nuestros botones8 los cuales e,ecutar(n una macro.
En esta leccin veremos cmo crear estos botones.
H." #entro de la ventana Personalizar deberemos activar la pesta9a: Comandos.
I." En la lista de Categoras deberamos +acer un clic sobre: &acros.
En la parte derec+a de esta misma ventana aparecer(n dos opciones: Personalizar
elemento de men$ ) Personalizar botn8 en esta ocasin utilizaremos la segunda de las
opciones.
J." #eberemos +acer un clic sobre la opcin Personalizar botn para seleccionarla.
K." 5eguidamente deberemos desplazar este botn a la nueva barra de +erramientas que
+emos creado. Para ello simplemente deberemos situarnos encima8 pulsaremos el botn
izquierdo del ratn ) mientras lo tenemos pulsado nos desplazaremos +asta situarnos
encima de la barra de +erramientas que +emos creado anteriormente.
L." 'na vez situado el cursor dentro de la barra de +erramientas soltaremos el botn.
Podremos ver como dentro de la barra: &is macros aparece el botn que +emos
arrastrado.
3+ora que )a tenemos creado el botn en nuestra barra de +erramientas8 vamos a
personalizarlo para que cumpla con su uncin.
0bserva como en la ventana actual est( activado el botn: &odiicar seleccin.
!B." Pulsa este botn8 despl(zate +asta la opcin: Cambiar imagen del botn.
!!." #e la lista8 selecciona el icono que m(s te guste.
0bserva cmo la imagen del botn de nuestra barra de +erramientas +a cambiado.
!.." Pulsa nuevamente el botn: &odiicar seleccin.
3+ora lo que cambiaremos es el texto que aparecer( en el momento en el que pongamos
el ratn encima de este botn8 as de esta orma siempre podremos recordar que uncin
+ace dic+o botn.
!4." 5elecciona la opcin >ombre: ) escribe: Cepetir con inorme.
En la siguiente leccin asignaremos la macro a este botn.
Captulo: Asignar macro a botn

En lecciones anteriores +emos visto cmo crear una barra de +erramientas
personalizada ) un botn en ella.
En esta leccin veremos cmo asignar una macro a este botn personalizado.
!:." 3bre nuevamente el botn: &odiicar seleccin.
!H." 5elecciona la opcin: 3signar macro...
3parecer( una nueva ventana llamada: 3signar macro.
!I." #e esta nueva ventana escoge la macro que deseas asignar a este botn. En nuestro
caso seleccionaremos: EliminarCepetidos)Cegistro8 macro que serva para eliminar
elementos repetidos de una lista ) crear un inorme con el n$mero de repeticiones.
!J." 'na vez seleccionada la macro8 pulsa 3ceptar.
!K." Cierra la ventana Personalizar.
3 partir de este momento )a puedes utilizar este botn en el momento que desees
e,ecutar la macro.
+ttp:QQx+amster.comQmoviesQ4H!..QilmingR+isRsDingerRDieRgettingRuc7ed.+tml

You might also like