Vous êtes sur la page 1sur 37

MACROS EN EXCEL Parte I

Excel es un programa que tiene un gran potencial, pero la mayora de la gente lo maneja de una forma
muy simple, utilizando solo opciones bsicas, pero hay algo muy importante que tengo que decirles.
Excel cuenta con un lenguaje muy poderoso llamado Visual Basic, este es solo una parte del lenguaje,
pero permite hacer o resolver los problemas mas fcilmente, solo debemos aprender a programarlo y
para eso es este curso, podra la gente decir que este curso es un nivel muy alto de Excel y quizs si lo
sea, pero es fcil de aprender ya que se manejaran trminos sencillos, a mi me gusta hablar con palabras
que todo el mundo entienda y eso lo hace mas fcil. La programacin que emplea en este curso o las
estructuras que aparecen son creadas por suservidor, ya que para manejar la programacin
de Visual Basic con Excel es necesario tener mucha creatividad, cada persona puede crear estructuras
diferentes pero que trabajen igual. s que manos a la obra.
Fase 1
!rimeramente debemos de saber que es una "acro y a continuacin se e#plica el trmino$
%na "acro son una serie de pasos que se almacenan y se pueden activar con alguna tecla de control y
una letra.
!or ejemplo, todos los das empleo frecuentemente en mis celdas los mismos pasos$ &ama'o de (uente
)&ama'o de la letra*, +egrita, (uente)&ipo de letra* y ,olor de (uente),olor de Letra*, para no estar
repitiendo estos pasos los puedo almacenar en una macro y cuando ejecute la macro los pasos antes
mencionados se ejecutaran las veces que yo lo desee. continuacin te muestro como grabar una macro
y ejecutarla$
-. &rasldate a la celda A1 y escribe tu +ombre. !or ejemplo, Ramn y presiona .nter
/. 0egrsate a la celda A1, porque cuando diste .nter baj de celda o cambi el rumbo.
1. 2a clic en el Men Ver, seguido por la 3pcin Barra e !erramientas y elija Visual Basic. 4e
activara la barra de herramientas 5isual 6asic.
1. 2a clic en el botn "uarar Macr#, el que tiene la ruedita zul. 7indo8s activa el cuadro de
dialogo "ra$ar Macr#, el cual permitir darle el nombre a la macro y cual ser el mtodo
abreviado para ejecutarla. .l mtodo breviado se refiere con que letra se va activar la macro,
obviamente se activara con la tecla ,ontrol y la letra que usted quiera, de preferencia en
min9scula, porque si activa las may9sculas la macro se activara presionando la tecla 4hift :
,ontrol : la letra que usted indico.
-. 2onde dice N#m$re e la macr# ya aparece el nombre que llevara la macro en este caso
Macr#1. 4i desea cambiar el nombre escriba uno nuevo, pero yo le recomiendo que as lo deje.
/. .n la opcin M%t## A$re&ia# aparece que se activara con la tecla C#ntr#l'C(RL) : la letra
que usted indica, de clic en el cuadrito y ponga una letra, por ejemplo ponga la letra a)en
min9sculas*. La macro se activara cuando este lista con la tecla C#ntr#l * a
1. 2e clic en el B#tn Ace+tar. 7indo8s empezara a grabar todos los pasos en la Macr#1 y el
botn de la ruedita azul cambiara de forma ahora ser un cuadrito zul, se llamar ,etener
-ra$acin. Lo utilizaremos cuando terminemos de indicarle los pasos para detener la grabacin.
;. ,ambie el &ipo de Letra en el B#tn Fuente de la barra de herramientas (ormato
<. ,ambie el tama'o de la letra en el B#tn (ama.# e Fuente de la barra de
herramientas (ormato
=. !resione el B#tn Ne-rita de la barra de herramientas (ormato
>. ,ambie el color de la letra en el B#tn C#l#r e Fuente de la barra de herramientas (ormato.
0ecuerde que todos estos pasos estn siendo almacenados en la macro que estamos grabando
y tambin recuerde que estos pasos se estn efectuando en la celda A1.
?. !resione el 6otn ,etener "ra$acin de la barra de @erramientas de Visual Basic/ .l que tiene
el cuadrito azul presionado.
Listo .#cel guardo los pasos en la "acro- que se activara presionado la teclaC#ntr#l * a
1. .scribe otro nombre en la celda C1 y presiona Enter, despus regresa a la celda C1.
2. !resiona la tecla C#ntr#l * a. 7indo8s efectuara todos los pasos grabados sobre la celda C1,
esto quiere decir que el nombre que esta en C1 tendr las caractersticas del que esta en A1.
&ipo de letra, tama'o,negrita y el color que indicaste al grabar la macro.
N#ta. ,ada vez que presiones C#ntr#l * a .#cel ejecutara la macro y efectuar los pasos en la celda que
te encuentres. !uedes grabar todas las macros que desees.
hora te recomiendo que domines estos pasos antes de pasar a la siguiente fase. &rata de crear
macros que almacenen pasos como estos, recuerda los pasos los vas a indicar tu, que no se te olvide
detener la grabacin despus de que indicaste los pasos, repite este ejercicio las veces que sea
necesario para aprendrtelo bien.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
!rctica B
Cenera las siguientes "acros$
Craba una Macr# que se active con C#ntr#l * $ y que esta macro permita abrir un archivo
Craba una Macr# que se active con C#ntr#l * c y que esta macro permita insertar un 7ordrt
"uchos pensarn que esto no es nada pero ya veremos ms adelante cuando mezclemos los cdigos
que genera Excel con los de Visual Basic. .sto ser pura ,inamita.
Fase 0
6ien, ahora despus de practicar la Fase 1 con diferentes ejemplos o Macr#s pasaremos a la
siguiente Fase que nos permitir observar los cdigos que hemos generados con nuestra macros. &e
recomiendo que salgas de Excel y vuelvas a entrar, para que trabajes limpio sin ninguna macro y
empezando de la macro- de nuevo.
OBSERVAN,O LOS CO,I"OS ,E 1NA MACRO ,E EXCEL
,rearemos una macro y veremos sus cdigos$
!ara observar los cdigos de una macro debemos de seguir los siguientes pasos$
-. !rimeramente trasldese a la celda A2 antes de empezar la grabacin de la "acro
/. !resione el 6otn "ra$ar Macr# de la barra de @erramientas Visual Basic/ Excelmuestra el
cuadro de 2ialogo Crabar "acro
1. .n la opcin M%t## A$re&ia# escriba la letra r, por lo tanto la macro se llamar con C#ntr#l *
r
;. !resione el botn Ace+tar/ Excel inicia la grabacin del la Macr#1
<. &rasldese a la celda A1 y escriba Ramn, despus presione Enter para aceptar el valor en la
celda
=. !are la grabacin de la macro presionando el botn ,etener "ra$acin de la barra de
herramientas Visual Basic/ .#cel a grabado los pasos y a generado un cdigo, observmoslo.
>. !resione la tecla lt : la tecla de funcin (--)Alt * F11*. .#cel nos traslada al .ditor de 5isual
6asic. 4i este editor no se activa es que .#cel no est bien instalado o se ha borrado. &ambin
puede acceder desde el Men !erramientas3 Macr# 4 Eit#r e Visual Basic.
?. ctive los siguientes cuadros o ventanas$
o 2 clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
o 2 clic en el Men &er y elija la opcin Ventana Pr#+ieaes
.stas dos opciones deben de estar siempre activadas ya que de ah depende todo lo que vayamos a
hacer.

-. 2el cuadro Pr#4ect# de doble clic en Mul#s o simplemente presione el signo
de * que aparece en la opcin Mul#s. 4e activar debajo de Mul#s la 3pcin M#ul#1
/. 2e doble clic en M#ul#1. 4e mostrar en el .ditor de 5isual 6asic el cdigo de la macro que
grabamos de la siguiente forma$
Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 08/04/2001 por RAMON MENDOZA OCOA
'
' Acce!o d"rec#o$ C%R&'r
'
Ra(ge()A1))*Selec#
Ac#"+eCell*,or-ulaR1C1 . )Ra-/()
Ra(ge()A2))*Selec#
E(d Sub
Due es lo que significa sto nos preguntaremos asombrados, a continuacin se da una e#plicacin de
lo que ha hecho Excel$
Su$ y En Su$ indican el inicio y el final del procedimiento de la Macr#1
&odo lo que aparece con un apostrofe 5 indica que no se tomar en cuenta que es slo te#to o
comentarios y ese te#to debe aparecer en un color, ya sea el color verde.
Ran-e'6A16)/Select Bndica que lo primero que hicimos al grabar la macro fue trasladarnos
a la celda A1. La orden Ran-e nos permite trasladarnos a una celda
Acti&eCell/F#rmulaR1C1 7 6Ramn6 .sto indica que se escribir en la celda en que se
encuentra el valor de te#to Ramn. &odo lo que aparece entre comillas siempre ser un valor de
te#to. La orden Acti&eCell/F#rmulaR1C1 nos permite escribir un valor en la celda activa.
Ran-e'6A06)/Select 3tra vez indicamos que se traslade a la celda /. .sto se debe a que
cuando escribimos el nombre de Ramn en A1 presionamos Enter y al dar Enter bajo a la
celda A0.
!ara comprender mejor alteraremos el cdigo dentro del editor de 5isual 6asic.
Due crees que pasara aqu con nuestra "acro$
Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 08/04/2001 por RAMON MENDOZA OCOA
'
' Acce!o d"rec#o$ C%R&'r
'
Ra(ge()A1))*Selec#
Ac#"+eCell*,or-ulaR1C1 . )Ra-/()
Ra(ge()01))*Selec#
Ac#"+eCell*,or-ulaR1C1 . )Calle 21 de Mar1o 2280)
Ra(ge()C1))*Selec#
Ac#"+eCell*,or-ulaR1C1 . )3142445413)
Ra(ge()D1))*Selec#
Ac#"+eCell*,or-ulaR1C1 . )Nogale! So(ora)
Ra(ge()E1))*Selec#
Ac#"+eCell*,or-ulaR1C1 . )CONA&E6 NO7A&ES)
E(d Sub
s es, acabo de alterar el cdigo y cuando regrese a Excel y ejecute la macro con C#ntr#l * r har lo
siguiente$
En A1 escri$ir8 Ramn
En B1 escri$ir8 Calle 01 e Mar9# :0;<
En C1 escri$ir8 =1>0>?@>1=
En ,1 escri$ir8 N#-ales S#n#ra
En E1 escri$ir8 CONALEP NO"ALES
s que salgamos del editor dando clic en el Men ArcAi&# y eligiendo la opcin Cerrar 4 &#l&er a
Micr#s#Bt Excel. 4i no desea salir por completo d clic en el $#tn Micr#s#Bt Excel que se encuentra
activado en la barra de tareas y cuando desee volver al editor d clic en el $#tn Micr#s#Bt Visual
Basic que se encuentra en la barra de &areas.
hora ya que salimos de Visual Basic y estamos en Excel de +uevo ejecutemos la macro presionando
C#ntr#l * r y veamos los resultados de nuestra modificacin.
Du te parece es sencillo o noE ,laro necesitamos practicar bastante para dominar esto, as que repasa
la Fase 0 cuantas veces sea necesario. 3tra cosa, no trates de generar cdigos muy complejos en tus
macros porque te vas a enredar, poco a poco se va lejos.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
!rctica BB
Cenera una Macr# que escriba un nombre en una celda y lo ponga negrita y observa el Ci-#.
Cenera una Macr# que escriba un nombre en una celda y lo ,entre y observa el Ci-#.
Cenera una Macr# que escriba un nombre en una celda y cambie el tama'o de la letra a /F puntos y
observa el Ci-#.
,digos "s comunes$
(raslaarse a una Cela
Ra(ge()A1))*Selec#
Escri$ir en una Cela
Ac#"+ecell*,or-ulaR1C1.)Ra-o()
Letra Ne-rita
Selec#"o(*,o(#*0old . %rue
Letra Cursi&a
Selec#"o(*,o(#*8#al"c . %rue
Letra Su$ra4aa
Selec#"o(*,o(#*9(derl"(e . :l9(derl"(eS#;leS"(gle
Centrar (ext#
<"#= Selec#"o(
*or"1o(#alAl"g(-e(# . :lCe(#er
E(d <"#=
Alinear a la i9Cuiera
<"#= Selec#"o(
*or"1o(#alAl"g(-e(# . :l&e>#
E(d <"#=
Alinear a la ,erecAa
<"#= Selec#"o(
*or"1o(#alAl"g(-e(# . :lR"g=#
E(d <"#=
(i+# e Letra'Fuente)
<"#= Selec#"o(*,o(#
*Na-e . )A7ara-o(d)
E(d <"#=
(ama.# e Letra'(ama.# e Fuente)
<"#= Selec#"o(*,o(#
*S"1e . 1?
E(d <"#=
C#+iar
Selec#"o(*Cop;
Pe-ar
Ac#"+eS=ee#*6a!#e
C#rtar
Selec#"o(*Cu#
Orenar Ascenente
Selec#"o(*Sor# @e;1$.Ra(ge()A1))A Order1$.:lA!ce(d"(gA eader$.:l7ue!!A B
OrderCu!#o-$.1A Ma#c=Ca!e$.,al!eA Or"e(#a#"o($.:l%op%o0o##o-
Oren ,escenente
Selec#"o(*Sor# @e;1$.Ra(ge()A1))A Order1$.:lDe!ce(d"(gA eader$.:l7ue!!A B
OrderCu!#o-$.1A Ma#c=Ca!e$.,al!eA Or"e(#a#"o($.:l%op%o0o##o-
Buscar
Cell!*,"(d(<=a#$.)Ra-o()A A>#er$.Ac#"+eCellA &ooC8($.:l,or-ula!A &ooCA# B
$.:l6ar#A Searc=Order$.:l0;RoD!A Searc=D"rec#"o($.:lNe:#A Ma#c=Ca!e$. B
,al!e)*Ac#"+a#e
Insertar Fila
Selec#"o(*E(#"reRoD*8(!er#
Eliminar Fila
Selec#"o(*E(#"reRoD*Dele#e
Insertar C#lumna
Selec#"o(*E(#"reColu-(*8(!er#
Eliminar C#lumna
Selec#"o(*E(#"reColu-(*Dele#e
A$rir un Li$r#
<orCbooC!*Ope( ,"le(a-e$.)C$EM"! docu-e(#o!Evideo safe 3.xls)
"ra$ar un Li$r#
Ac#"+e<orCbooC*Sa+eA! ,"le(a-e$.)C$EM"! docu-e(#o!Ep"!c"!*:l!)A ,"le,or-a# B
$.:lNor-alA 6a!!Dord$.))A <r"#eRe!6a!!Dord$.))A ReadO(l;Reco--e(ded$. B
,al!eA Crea#e0acCup$.,al!e
.stos serian algunos cdigos muy comunes en Excel, pero si usted desea puede generar mas cdigos
de otras opciones, es cuestin de que los ocupe.
ntes de pasar a la Fase = es necesario que domines generar Macr#s y 3bservar sus cdigos que se
encuentran en la Fase 0/ 0ecuerda esto es de mucha prctica y para eso es necesario aprender bien las
fases nteriores.
.
Fase =
CREAN,O FORM1LARIOS D PRO"RAMEN,OLOS
ntes de .mpezar esta nueva fase te recomiendo que salgas de Excel y vuelvas a entrar, esto es por
si estuviste practicando los cdigos, para que no quede una secuencia de "acros.
hora te ense'ar a dominar lo m#imo de .#cel que es crear formularios y programarlos, bueno un
formulario es una ventana que se programa por medio de controles y estos controles responden a
sucesos que nosotros programamos. &odo esto se encuentra dentro de 5isual 6asic.
continuacin muestro cmo crear un formulario y como programarlo$
-. !resione La &eclas Alt * F113 para entrar al editor de Visual Basic.
/. ctiva las siguientes opciones$
o 2 clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
o 2 clic en el Men Ver y elija la opcin Ventana e Pr#+ieaes
1. 2el Men Insertar elija la 3pcin 1serF#rm/ .sto inserta el (ormulario que
programaremos con controles. .n el Ex+l#ra#r e Pr#4ect# se observar que se insert
el 1serF#rm.

&ambin cuando d clic en el (ormulario 1SERFORM1 se debe de activar el Cuar# e !erramientas, si
no se activa d clic en el Men Ver y elija la opcin Cuar# e !erramientas.
-. .lija del Cuar# e !erramientas el ,ontrol EtiCueta el que tiene la A y rrastre dibujando en
el (ormulario 1SERFORM1 la etiqueta. Duedara el nombre Label-, despus de un clic en la
etiqueta dibujada y podr modificar el nombre de adentro y pondremos ah N#m$re/ 4i por error
da doble clic en la etiqueta y lo manda a la pantalla de programacin de la etiqueta, solo de
doble clic en 1serF#rm1 que se encuentra en el Ex+l#ra#r e Pr#4ect#/
/. .lija del Cuar# e !erramientas el control Cuar# e (ext# el que tiene a$ y arrastre
dibujando en el formulario 1SERFORM1 el cuadro de te#to a un lado de la etiqueta que
dice N#m$re. .l cuadro de te#to debe estar vaco y su nombre ser (ext$#x1, el nombre slo
aparecer en el control.
1. @aga los dos pasos anteriores igualmente poniendo ,ireccin en la La$el0 y (el%B#n# en
la La$el= y tambindib9jeles su &e#tbo#. .sto quedara as despus de haberlo hecho
Si tiene algn problema al dibujar las etiquetas o los cuadros de te#to, solo cmbiele el nombre a la
etiqueta o el cuadro de te#to en la Ventana Pr#+ieaes la opcin se llama 'Name)/
.l .rror que marque puede ser N#m$re Am$i-u#3 pero si le cambias el +ombre al control se quitar el
error. !uedes ponerle cualquier nombre en lugar de Label-.
S#l# altera est# si te marca err#r3 si NO %Fal# asG/
!ueden modificarse algunas opciones de los controles como las .tiquetas y ,uadros de &e#tos en la
5entana !ropiedades. !ara hacer esto es necesario tener conocimiento sobre las propiedades de los
controles. +o altere las propiedades si no las conoce.

-. .lija del Cuar# e !erramientas el control B#tn e C#man# y rrastre dibujando en el
(ormulario
1SERFORM1 el 6otn, despus de un clic en elnombre del 6otn dibujado y podr modificar el
nombre y
pondremos ah Insertar/ 4i por error da doble clic en la 6otn y lo manda a la pantalla de
programacin de la
etiqueta, solo de doble clic en 1serF#rm1 que se encuentra en el Ex+l#ra#r e Pr#4ect#/
s quedar el (ormulario formado por los controles$

/. hora de doble clic sobre el control (ext$#x1 para programarlo y despus inserte el siguiente
cdigo$
6r"+a#e Sub %e:#0o:1BC=a(ge()
Range("A9").Select
ActiveCell.FormulaR1C1 = ext!ox1
E(d Sub
.sto indica que se vaya a AH y escriba lo que hay en el (ext$#x1
N#ta.ALo que esta en azul lo genera .#cel automticamente, usted solo escribir lo que est en
+egrita.
!ara volver al F#rmulari# y programar el siguiente &e#tbo# de doble clic en 1serF#rm1 que se
encuentra en el Ex+l#ra#r e Pr#4ect#3 o simplemente de clic en Ver O$Fet# en el
mismo Ex+l#ra#r e Pr#4ect#.
1. hora d doble clic sobre el control (ext$#x0 para programarlo y despus inserte el siguiente
cdigo$
6r"+a#e Sub %e:#0o:2BC=a(ge()
Range("!9").Select
ActiveCell.FormulaR1C1 = ext!ox"
E(d Sub

.sto indica que se valla a BH y escriba lo que hay en el (ext$#x0
!ara volver al F#rmulari# y programar el siguiente &e#tbo# de doble clic en 1serF#rm1 que se
encuentra en el Ex+l#ra#r e Pr#4ect#3 o simplemente de clic en Ver O$Fet# en el
mismo Ex+l#ra#r e Pr#4ect#.
;. hora de doble clic sobre el control (ext$#x= para programarlo y despus inserte el siguiente
cdigo$
6r"+a#e Sub %e:#0o:3BC=a(ge()
Range("C9").Select
ActiveCell.FormulaR1C1 = ext!ox3
E(d Sub
.sto indica que se valla a CH y escriba lo que hay en el (ext$#x=
!ara volver al F#rmulari# y programar el B#tn e C#man# Insertar d doble clic
en 1serF#rm1que se encuentra en el Ex+l#ra#r e Pr#4ect#3 o simplemente d clic en Ver
O$Fet# en el mismo Ex+l#ra#r e Pr#4ect#.
<. hora d doble clic sobre el control B#tn e C#man# para programarlo y despus inserte el
siguiente cdigo$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Re- 8(!er#a u( re(gl/(
Selec#"o(*E(#"reRoD*8(!er#
Re- E-p#; &"-p"a &o! %e:#bo:
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
Re- %e:#bo:1*Se#,ocu! E(+Fa el cur!or al %e:#bo:1 para +ol+er a cap#urar
lo! da#o!
%e:#0o:1.SetFocus
E(d Sub
N#ta/>.l comando Rem es empleado para poner comentarios dentro de la programacin, el
comando Em+t4 es empleado para vaciar los &e#tbo#.
=. hora presione el botn EFecutar 1serF#rm que se encuentra en la barra de herramientas o
simplemente la tecla de funcin F2

4e activar el 1serB#rm1 y todo lo que escriba en los &e#tbo# se escribir en .#cel y cuando
presione el botn Bnsertar, se insertar un rengln y se vaciarn los &e#tbo# y despus se
mostrar el cursor en el (ext$#x1.
.n este archivo en el que usted se encuentra, es una hoja de .#cel Libre de 5irus, o sea que
est limpio, bralo sin ning9n problema, ya que ah viene un ejemplo de la "acro ya realizada y
slo la ejecutar y ver cmo trabajan las "acros. .spero que ests pendiente porque vienen
ms partes sobre este interesante curso de "acros.
.l rchivo viene con el +ombre de "acro-
MACROS EN EXCEL Parte II
@ola amigos, estamos de nuevo aqu para mostrar la segunda parte de "uGa e Macr#s enExcel que te
ser de gran utilidad, ya que se manejarn Frmulas en los (ormularios, BsCueas e (ext# y El
Asistente e Iin#Js. .ntonces empecemos migos.
(RABAKAN,O CON FLRM1LAS
.s de suma importancia saber aplicar Frmulas en Macr#s e Excel, ya que la mayora de las hojas de
clculos las involucran, por ejemplo los Bnventarios, las +minas o cualquier otro tipo de hoja las llevan,
es por eso que en la siguiente Fase se muestra como manejar Frmulas en Macr#s e Excel.
Fase I
-. !resione La &eclas Alt * F113 para entrar al editor de Visual Basic.
/. ctiva las siguientes opciones$
o 2e clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
o 2e clic en el Men Ver y elija la opcin Ventana Pr#+ieaes
1. 2el Men Insertar elija la 3pcin 1serF#rm/ .sto inserta el (ormulario que programaremos con
controles. .n el Ex+l#ra#r e Pr#4ect# se observara que se inserto el 1serF#rm.
hora crears un formulario con el siguiente aspecto$

.l formulario tendr$
o &res etiquetas
o &res &e#tbo#
o %n 6otn de ,omando
Los datos que se preguntarn sern +ombre y .dad, los 2as 5ividos se generaran automticamente
cuando insertes la edad. continuacin se muestra como se deben de programar estos ,ontroles$
!rogramacin de los ,ontroles$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Selec#"o(*E(#"reRoD*8(!er#
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
%e:#0o:1*Se#,ocu!
E(d Sub
6r"+a#e Sub %e:#0o:1BC=a(ge()
Ra(ge()AG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:1
E(d Sub

6r"+a#e Sub %e:#0o:2BC=a(ge()
Ra(ge()0G))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:2
Re- aHuF !e crea la ,or-ula
%e:#0o:3 . Ial(%e:#0o:2) J 3K?
Re- El %e:#bo:3 guardara el #o#al de la -ul#"pl"cac"/( del %e:#bo:2 por 3K?
Re- El Co-a(do Ial per-"#e co(+er#"r u( +alor de %e:#o a u( Ialor Nu-Lr"co
Re- E!#o !e debe a Hue lo! %e:#bo: (o !o( Nu-Lr"co! ; debe-o! de Co(+er#"rlo!
E(d Sub
6r"+a#e Sub %e:#0o:3BC=a(ge()
Ra(ge()CG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:3
E(d Sub
.sto va permitir que cuando se ejecute el formulario y se de la edad el resultado de los das vividos
aparecer en el (ext$#x= y se escribir tambin en Excel. .l comando Val es un comando de Visual
Basic que te permite convertir un valor de te#to a un valor numrico. 0ecuerden el ,omando 0em se
utiliza para poner ,omentarios 9nicamente y no afecta a la programacin.
.ste rchivo de esta Macr# se llama Macr#s e Ea y viene incluido aqu.
Ceneraremos otro ejemplo, ,rea el 4iguiente (ormulario con los siguientes datos$
< .tiquetas
< &e#tbo#
- 6otn de ,omando
Los datos que se preguntaran sern +ombre, 2as &rabajados, !ago por 2a, 6onos y 4ueldo +eto.
Cenera el siguiente cdigo$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Selec#"o(*E(#"reRoD*8(!er#
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
%e:#0o:1*Se#,ocu!
E(d Sub
6r"+a#e Sub %e:#0o:1BC=a(ge()
Ra(ge()AG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:1
E(d Sub

6r"+a#e Sub %e:#0o:2BC=a(ge()
Ra(ge()0G))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:2
E(d Sub

6r"+a#e Sub %e:#0o:3BC=a(ge()
Ra(ge()CG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:3
E(d Sub

6r"+a#e Sub %e:#0o:4BC=a(ge()
Ra(ge()DG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:4
Re- aHuF !e crea la >or-ula
%e:#0o:? . Ial(%e:#0o:2) JIal(%e:#0o:3) ' Ial(%e:#0o:4)
Re- El %e:#0o:? guardarael #o#al
E(d Sub

6r"+a#e Sub %e:#0o:?BC=a(ge()
Ra(ge()EG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:?
E(d Sub
,uando se introduzca el 6onos automticamente se generara el 4ueldo +eto.
.ste ejemplo viene en el rchivo Macr#s e Suel# Net#
1SAN,O INFORMACILN CON 1N (EX(BOX
4e puede buscar informacin con un &e#tbo# programndolo de la siguiente forma$

2ibuje una EtiCueta, un (ext$#x y un B#tn e C#man# y agregue el siguiente ,digo$
6r"+a#e Sub %e:#0o:1BC=a(ge()
Ra(ge()aG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:1
E(d Sub
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Cell!*,"(d(<=a#$.%e:#0o:1A A>#er$.Ac#"+eCellA &ooC8($.:l,or-ula!A &ooCA# B
$.:l6ar#A Searc=Order$.:l0;RoD!A Searc=D"rec#"o($.:lNe:#A Ma#c=Ca!e$. B
,al!e)*Ac#"+a#e
E(d Sub
4i te fijas inclu en la programacin del B#tn Buscar AA#ra que buscara lo que se ponga en el &e#tbo#-
al dar clicG.
.ste proceso viene en el rchivo ,ompleto Macr#0


(RABAKAN,O CON EL ASIS(EN(E
.l asistente es el personaje de OBBice que se activa para ayudarnos y una de las ventajas
es que podemos "anipularlo, por ejemplo se le puede dar animacin, "overse, @acer
!reguntas, .tc.
continuacin se muestran algunos cdigos del sistente$
.ste cdigo permite hacer visible el ayudante o sea mostrarlo. 4i deseas ocultarlo solo cambia la
opcin (rue por False$
Assistant/Visi$le 7 (rue
.ste cdigo permite "over el sistente a un nuevo lugar, solo cambia los valores numricos y cambiara
de posicin$
Assistant/M#&e ?=<3 0=<
.ste cdigo permite activar un efecto de animacin, cuando escribas el signo Bgual despus de
ssistant.nimation H aparecer un men9 con diferentes efectos de animacin$
Assistant/Animati#n 7 ms#Animati#nListens(#C#m+uter
.ste ejemplo permite crear un Nue&# Asistente para poderlo manipular con
una pregunta y que t9 contestes. La variable t guardar el valor de la respuesta,
si el valor es A1 significa que es 4 y por lo tanto borrar el rengln.
<"#= A!!"!#a(#*NeD0alloo(
*%e:# . )De!ea! 0orrar e!#e Reg"!#ro)
*0u##o( . -!o0u##o(Se#Me!No
*ead"(g . )Ad+er#e(c"a)
# . *S=oD
E(d <"#=

8> # . 43 %=e(
A!!"!#a(#*A("-a#"o( . -!oA("-a#"o(E-p#;%ra!=
Selec#"o(*E(#"reRoD*Dele#e
E(d 8>
.ste ejemplo viene en el archivo Macr#0
4i deseas que siga saliendo esta gua solo escrbeme pidiendo que sigan saliendo ejemplos.
MACROS EN EXCEL Parte III
@ola amigos, estamos de nuevo aqu para mostrar la tercera parte de "uGa e Macr#s en Excel que te
ser de gran utilidad, ya que se manejaran C#nsultas en l#s F#rmulari#s3 acces#s a las Macr#s
ese Excel sin necesia e entrar a Visual Basic 4 al-un#s m%t##s e tra$aFar mas B8cil . 2e
antemano muchas gracias por apoyar este curso de .#cel creo que les ha servido, no haba tenido mucho
tiempo para escribir esta tercera parte pero creo que ya estII.JJJ"ucho KnimoJJJ.
ELABORAN,O 1NA CONS1L(A
&odo Re-istr# e inB#rmacin debe de tener su propia C#nsulta3 BaFa 4 M#iBicacin, es por eso que
en este nuevo capitulo nos concentramos en ello, primeramente en poder c#nsultar la inB#rmacin que
ya se escribi en la !#Fa e Excel, obviamente desde una Macr# combinada con Visual Basic,
observemos el siguiente ejemplo$
Fase I
!resione La &eclas Alt * F113 para entrar al editor de Visual Basic.
-. ctiva las siguientes opciones$
o 2e clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
o 2e clic en el Men &er y elija la opcin Ventana Pr#+ieaes
2. 2el Men Insertar elija la 3pcin 1serF#rm/ .sto inserta el (ormulario que programaremos con
controles. .n el Ex+l#ra#r e Pr#4ect# se observara que se inserto el 1serF#rm.
hora crears un formulario con el siguiente aspecto$
.l formulario tendr$
o &res etiquetas
o &res &e#tbo#
o &res 6otones de ,omando
Los datos que se preguntarn sern N#m$re3 ,ireccin 4 (el%B#n#. Los tres botones nos servirn para
lo siguiente$
C#nsultar/ ,onsultar la informacin que hayamos insertado desde el botn insertar.
BaFa/ !odr eliminar alg9n dato que se consult y no lo queremos.
Insertar/ &endr la funcin de insertar los registros que vayamos dando de alta, es como los ejercicios
anteriores.
continuacin se muestra cmo se deben de programar estos ,ontroles.
BO(LN ,E CONS1L(A
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Cell!*,"(d(<=a#$.%e:#0o:1A A>#er$.Ac#"+eCellA &ooC8($.:l,or-ula!A
&ooCA#$.:l6ar#A Searc=Order$.:l0;RoD!A Searc=D"rec#"o($.:lNe:#A
Ma#c=Ca!e$.,al!e)*Ac#"+a#e
Ac#"+eCell*O>>!e#(0A 1)*Selec#
%e:#0o:2 . Ac#"+eCell
Re- la lF(ea Hue co(#"e(e el Ac#"+eCell*O>>!e#(0A 1)*Selec# per-"#e -o+er!e
u(a colu-(a a la derec=aA por lo #a(#o de!puL! de la bN!Hueda de la! pr"-era!
lF(ea! co( Cell*,"(d !" e(cue(#ra el No-bre de la per!o(a !e -ue+e a la
!"gu"e(#e colu-(a ; la lF(ea %e:#0o:2 . Ac#"+eCell6er-"#e cap#urar el +alor de
la celda al %e:#bo:2 ; a!F -o!#rar el da#o de la celda e( el %e:#0o:2*
Ac#"+eCell*O>>!e#(0A 1)*Selec#
%e:#0o:3 . Ac#"+eCell
Re- Cada +e1 Hue !e e!cr"ba la lF(ea Ac#"+eCell*O>>!e#(0A 1)*Selec# !"g(">"ca
Hue !e #"e(e Hue -o+er!e u(a colu-(a a la derec=a*
Re- S" el (o-bre Hue #ra#a! de co(!ul#ar (o !e e(cue(#ra podrFa ge(erar u(
error porHue >allarFa el Cell*,"(d e!#o puede ocurr"r e( el <ord G5A ;o
#rabaOo co( el <ord 2000 o P6 ; (o #e(go e!e proble-a* 6ero e!#o !e
!oluc"o(arFa co( u(a #ra-pa de error*
E(d Sub
BO(LN BAKA
6r"+a#e Sub Co--a(d0u##o(2BCl"cC()
Selec#"o(*E(#"reRoD*Dele#e
Ra(ge()AG))*Selec#
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
%e:#0o:1*Se#,ocu!
E(d Sub
BO(LN INSER(AR
6r"+a#e Sub Co--a(d0u##o(3BCl"cC()
Ra(ge()AG))*Selec#
Selec#"o(*E(#"reRoD*8(!er#
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
%e:#0o:1*Se#,ocu!
E(d Sub
C1A,ROS ,E (EX(O
6r"+a#e Sub %e:#0o:1BC=a(ge()
Ra(ge()AG))*,or-ulaR1C1 . %e:#0o:1
Re- e!#a pr"-er lF(ea ree-pla1a a e!#a! do!QQ Hue #e parece #oda+Fa -a! cor#a
Ra(ge()AG))*Selec#
Ac#"+eCell*,or-ulaR1C1 . %e:#0o:1
E(d Sub

6r"+a#e Sub %e:#0o:2BC=a(ge()
Ra(ge()0G))*,or-ulaR1C1 . %e:#0o:2
E(d Sub

6r"+a#e Sub %e:#0o:3BC=a(ge()
Ra(ge()CG))*,or-ulaR1C1 . %e:#0o:3
E(d Sub
4i con el B#tn C#nsulta tienes un error cuando no encuentra a la persona, entonces tendrs que
agregar esto a tu cdigo del B#tn C#nsultar
BO(LN ,E CONS1L(A
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
#n $rror %oto noencontro

Re- E!#a lF(ea ge(era u(a #ra-pa de error !" E:cel e(cue(#ra u( error !e le
d"ce Hue !e +a;a a la e#"Hue#a noencontro Hue e!#a de>"("da -R! adela(#e e( el
c/d"go* No u!e la #ra-pa de error !" (o #"e(e proble-a! a la =ora de Hue (o
e(cue(#ra a la per!o(a* Recuerde !" u!#ed co-e#e cualHu"er error E:cel !e
d"r"g"rR a la e#"Hue#a noencontro* ; e!Hu"+arR cualHu"er errorA =a!#a u(o Hue
u!#ed co-e#a e( la progra-ac"/(*

Cell!*,"(d(<=a#$.ext!ox1A A>#er$.Ac#"+eCellA &ooC8($.:l,or-ula!A
&ooCA#$.:l6ar#A Searc=Order$.:l0;RoD!A Searc=D"rec#"o($.:lNe:#A
Ma#c=Ca!e$.,al!e)*Ac#"+a#e
ActiveCell.#ffset(&' 1).Select
ext!ox" = ActiveCell
ActiveCell.#ffset(&' 1).Select
ext!ox3 = ActiveCell
Re- %a-b"L( !e puede u#"l"1ar e!#e c/d"go para leer la "(>or-ac"/( de la!
celda! lo Hue e!#R e( a1ul* &a d">ere(c"a e! Hue !e a!"g(a( lo! +alore! a
+ar"able! ; de!puL! !e de!carga( a lo! %e:#0o:!*
ActiveCell.#ffset(&' 1).Select
(ireccion = Activecell
ActiveCell.#ffset(&' 1).Select
elefono = Activecell
ext!ox" = (ireccion
ext!ox3 = elefono
noencontro)
Re- AHuF !e e!Hu"+a el error
E(d Sub
Du te pareceE .s increble cmo una "acro combinada con 5isual 6asic puede hacer hasta lo
imposible.
6ueno ya tenemos elaborado un ejercicio de consultas de datos, ahora accederemos al formulario
desde Excel sin necesidad de entrar al Eit#r e Visual Basic.
!ara realizar este ejercicio debemos permanecer dentro del Eit#r e Visual Basic para poder introducir
el cdigo en un Mul#, por lo tanto debers seguir los siguientes pasos$
2 clic en el Men Insertar y elija la opcin Mul#
.scriba dentro del Mul# el nombre del modulo en este caso Su$ Entraa
,uando usted escriba 4ub .ntrada aparecer de la siguiente manera$
Sub E(#rada()
&oad 9!er,or-1
9!er,or-1*S=oD
E(d Sub
%sted deber escribir las dos lneas que estn en medio que son$
&oad 9!er,or-1
9!er,or-1*S=oD
La primer lnea significa que cargue a la memoria el formulario que se llama 1serF#rm1, la segunda lnea
significa que lo muestre, esto quiere decir que en el mdulo estamos escribiendo el cdigo de una macro
que permitir cargar el formulario desde .#cel sin necesidad de entrar al Eit#r e Visual Basic.
4i te fija en el e#plorador de proyecto aparece el Mul# que creamos.
4i queremos volver al formulario solo da doble clic en 1serF#rm1
6ueno ya est listo ahora salgamos del Eit#r e Visual Basic y volvamos a Excel/
2 clic en el Men ArcAi&# del Eit#r e Visual Basic
.lija la opcin Cerrar 4 &#l&er a Micr#s#Bt Excel
La que estamos en Excel, podemos insertar una imagen o un botn o cualquier grfico, por ejemplo$
2 clic en el Men Insertar
.lija la opcin Ima-en, seguido por Ima-en Preise.aa
inserte cualquier imagen y dele el tama'o que usted desea.
2 clic derecho sobre la Bmagen
.lija la opcin Asi-nar Macr#
2 clic en la Macr# que se llama Entraa, es obvio la 9nica que hicimos
2 ,lic en Ace+tar
2 clic fuera de la imagen en cualquier celda y listo si presionas la imagen cargar el formulario.
MACROS EN EXCEL Parte IV
6ueno empezaremos viendo cmo agregar informacin a un C#m$#$#x y un List$#x, primeramente
debers crear el siguiente formulario dentro de Visual Basic, recuerda desde .#cel se utiliza la tecla AL(
* F11 para entrar a Visual Basic, seguido del Men Insertar y despus 1serB#rm, bueno creo que ya lo
sabes. Bnserta %n C#m$#$#x 4 un List$#x y un B#tn.
hora que ya creaste la Bnterfaz vamos a programar el botn, veremos como se le puede agregar
informacin por medio de cdigo a estos dos controles.
2a doble clic en el B#tn y escribe las siguientes lneas dentro del procedimiento.
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Com*o!ox1.Add+tem ",uan ,ose"
Com*o!ox1.Add+tem "-edro de la Fuente"
Com*o!ox1.Add+tem "Salvador de la .u/"
.ist!ox1.Add+tem ",uan ,os0"
.ist!ox1.Add+tem "-edro de la Fuente"
.ist!ox1.Add+tem "Salvador de la .u/"
E(d Sub
6ueno vamos a analizar el significado de estas lneas$
Com*o!ox1.Add+tem ",uan ,os0"
La opcin AItem significa que vas a agregar un dato de te#to, por lo tanto se entiende como vas a
agregar a Muan Mos al C#m$#$#x1, por lo tanto yo puedo agregar los datos que quiera a
un C#m$#$#x o un List$#x con la opcin AItem, entonces al presionar el botn aparecern los datos
que se encuentra escritos y podrs seleccionar cualquiera de ellos, recuerda que la informacin la vas a
agregar seg9n tus necesidades.
hora si deseas agregar n9meros a un ,ombobo# o List6o# escribe el siguiente cdigo en un botn$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
For 1=1 to 2&
.ist*ox1.Add+tem str(x)
3ext
E(d Sub
La Bnstruccin F#r>Next es un ciclo contador que te permite contar desde un numero hasta otro. !or
ejemplo le digo que cuente desde el - hasta el <F y lo que se encuentre dentro del ciclo F#r>Next se
ejecutara el n9mero de veces, la X es una variable numrica que guarda el valor, cada vez que el ciclo da
una vuelta aumenta un numero, por lo tanto X va a valer desde - hasta <F, y la instruccin Str es para
convertir el valor numrico de la X en valor de &e#to, ya que la opcin AItem guarda solo te#to, claro
est que tambin puede funcionar sin esta instruccin en algunos casos.
!or lo tanto el List$#x1 va a guardar los n9mero del - al <F, sin necesidad de irlos poniendo de uno por
uno, imagnatelo$
.ist*ox1.Add+tem 415
.ist*ox1.Add+tem 4"5
.ist*ox1.Add+tem 435

La te quiero ver en el cdigo para que llegues al <F, jejejejejejeje.
6ueno esto es para introducirle datos a un List$#x 4 C#m$#$#x, pero como puedo usar estos datos para
enviarlos para una celda, en el siguiente ejemplo te lo e#plico$
2a doble clic en el List$#x y escribe el siguiente cdigo$
6r"+a#e Sub &"!#0o:1BCl"cC()
Range("a9").Select
ActiveCell.FormulaR1C1 = .ist!ox1
E(d Sub
s de fcil, cada vez que escojas un dato que se encuentre en un List$#x1 lo enviar a la celda aH,
escribindolo ah. 4i lo deseas hacer lo puedes hacer en un C#m$#$#x, slo cambia
List$#x1 por C#m$#$#x1 y se acab.
hora si deseas agregar los datos al List$#x o C#m$#$#x sin ning9n botn que presionar escribe el
siguiente cdigo$

6r"+a#e Sub 9!er,or-BAc#"+a#e()
Com*o!ox1.Add+tem ",uan ,ose"
Com*o!ox1.Add+tem "-edro de la Fuente"
Com*o!ox1.Add+tem "Salvador de la .u/"
.ist!ox1.Add+tem ",uan ,os0"
.ist!ox1.Add+tem "-edro de la Fuente"
.ist!ox1.Add+tem "Salvador de la .u/
E(d Sub

La ,lave est en el procedimiento 1serF#rmMActi&ate') esto quiere decir que cuando se active el
formulario cargara lo que tu le indiques, en este caso va a introducir los datos
al List$#x1 yC#m$#$#x1 automticamente, que te parece.

hora si deseas tomar informacin de una celda y enviarla a un C#m$#$#x o List$#x escribe el
siguiente cdigo en un 6otn$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Range("a9").Select
(o 67ile ActiveCell 89 $m:t;
ActiveCell.#ffset(1' &).Select
.ist!ox1.Add+tem ActiveCell
.oo:
E(d Sub
(jate bien, primeramente muevo el rango a la celda aH porque ah esta el inicio de mi informacin,
despus la lnea ,# IAile Acti&ecellNO Em+t4 significa @azlo mientras la celda no se encuentre vaca,
la siguiente lnea que es Acti&eCell/OBBset'13 <)/Select3 significa 6aja un 0engln, la siguiente
lnea ListB#x1/AItem Acti&eCell3 agrega la informacin de la celda al List$#x1 y la lnea L##+ es
parte del ciclo ,# IAile3 siempre cierra el ciclo, como el F#r>Next/ !or lo tanto todos los nombres que
estn delante de aH sern enviados al List$#x1 y cuando tope con la celda a12 que se encuentra vaca la
condicin del ,# IAile parara la ejecucin de su cdigo. .sto funciona caminando renglones hacia abajo,
pero si deseas moverte hacia la derecha por columnas solo cambia la lnea Acti&eCell/OBBset' 13
<)/Select por Acti&eCell/OBBset'<3 1)/Select, quiere decir que se mueva por columna, no por rengln.
Acti&eCell/OBBset' Ren-ln3 C#lumna)/Select
4i cambias el - por otro n9mero se mover el numero de veces que tu le indiques, por ejemplo si quiero
bajar -F renglones de un golpe$
Acti&eCell/OBBset'1<3 <)/Select
4i quiero moverme /F columnas a la derecha
Acti&eCell/OBBset'<3 0<)/Select
s funciona esto.
hora veremos como se ejecuta una macro a la hora de abrir un libro
!rimeramente inserta un M#ul# del Men Insertar dentro de Visual Basic y escribe el siguiente cdigo$
Sub Au#oBope(()
.oad <serForm1
<serForm1.S7o=
E(d Sub
La magia est en el procedimiento Aut#M#+en') que permite ejecutar automticamente lo que se
encuentre dentro de l cuando abras un libro que contenga este cdigo, en este ejemplo cuando se abre
el libro se activa el formulario - que programe.
s que todo lo que agregues dentro de este procedimiento se ejecutara automticamente cuando abras
un libro, que te parece.
continuacin veremos como ordenar una informacin por orden alfabtica ascendente, es un cdigo
muy completo y bueno que te permite localizar los datos y ordenarlos, sin pasarse un rengln en blanco.
3bservemos el siguiente ejemplo y aprendamos de l$
4i se fijan en la siguiente pantalla tengo datos en una hoja que empiezan en el rengln A1< y terminan
en C1P, el siguiente cdigo detectara donde debe detenerse para poder ordenar los datos. .s necesario
crear el cdigo para ordenar datos, pero aqu yo te lo muestro$
!rograma esto en el botn-
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Rem este c>digo locali/a el ultimo registro :or medio del rengl>n
Range("a1&").Select
(o 67ile ActiveCell 89 $m:t;
ActiveCell.#ffset(1' &).Select
.oo:
Rem llega 7asta el a1? donde no 7a; informaci>n ; se regresa un rengl>n :ara
ser exacto con la siguiente l@nea.
ActiveCell.#ffset(A1' &).Select
Rem este c>digo locali/a la Bltima columna del Bltimo dato
(o 67ile ActiveCell 89 $m:t;
ActiveCell.#ffset(&' 1).Select
.oo:
ActiveCell.#ffset(&' A1).Select
Rem esta l@nea guarda en la varia*le celdaactiva la celda exacta donde esta el
ultimo dato de la ultima columna de informaci>n' en este caso C1C.
celdaactiva = ActiveCell.Address
Rem este c>digo toma el rango desde A1& donde em:ie/a la informaci>n' 7asta
donde encontr> el ultimo dato C1C' Due lo guarda la varia*le celdaactiva.
Selecciona de A1& 7asta C1C.
Range("A1&)" E celdaactiva).Select
Rem este c>digo ordena los datos en orden ascendente' el c>digo fue generado
en $xcel' as@ Due si no sa*es generarlo solo co:ialo de aDu@.
Selection.Sort Fe;1)=Range("A1&")' #rder1)=xlAscending' Geader)=xl%uess' H
#rderCustom)=1' Iatc7Case)=False' #rientation)=xlo:o!ottom
E(d Sub
s es como funciona este cdigo de "acros de .#cel ordenando e#actamente desde -F hasta donde
estn los datos finales.
6ueno ahora para convertir la informacin a "in9scula o "ay9scula es muy parecido el cdigo, solo
obsrvalo$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Range("a1&").Select
(o 67ile ActiveCell 89 $m:t;
ActiveCell.FormulaR1C1 = .Case(ActiveCell)
ActiveCell.#ffset(1' &).Select
.oo:
E(d Sub
s es la magia esta en Lcase que convierte a "in9sculas y 1case a "ay9sculas, empieza en -F y
hasta que no encuentra datos deja de convertir a "in9sculas.
.l siguiente (ormulario y cdigo muestra la fuerza de cmo se puede consultar y modificar el dato que se
encontr.
EtiCueta ?3 escrbele el numero N dentro.
,rea la siguiente Bnterfaz, ; .tiquetas, 1 &e#tbo# y 1 6otones
,opia el siguiente cdigo$
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Re- !" (o !e e!cr"be (ada e( lo! %e:#bo:! a la =ora de "(!er#ar e!cr"be No
%"e(e
8> %e:#0o:1 . E-p#;%=e(Ra(ge()AG))*,or-ulaR1C1 . )No %"e(e)
8> %e:#0o:2 . E-p#;%=e(Ra(ge()0G))*,or-ulaR1C1 . )No %"e(e)
8> %e:#0o:3 . E-p#;%=e(Ra(ge()CG))*,or-ulaR1C1 . )No %"e(e)
Ra(ge()AG))*Selec#
Selec#"o(*E(#"reRoD*8(!er#
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
%e:#0o:1*Se#,ocu!
E(d Sub
6r"+a#e Sub Co--a(d0u##o(2BCl"cC()
O( Error 7o%o (oe(co(#ro
Re- C/d"go para bu!carA ;a lo co(oce-o!
Cell!*,"(d(<=a#$.%e:#0o:1A A>#er$.Ac#"+eCellA &ooC8($.:l,or-ula!A &ooCA# B
$.:l6ar#A Searc=Order$.:l0;RoD!A Searc=D"rec#"o($.:lNe:#A Ma#c=Ca!e$. B
,al!e)*Ac#"+a#e
Ac#"+eCell*O>>!e#(0A 1)*Selec#
%e:#0o:2 . Ac#"+eCell
Ac#"+eCell*O>>!e#(0A 1)*Selec#
%e:#0o:3 . Ac#"+eCell
Re- la e#"Hue#a 4 #o-a el +alor del re(gl/( ac#"+o ; per-"#e -od">"car la
"(>or-ac"/( Hue e(co(#r/A ;a Hue -od">"Hue! la "(>or-ac"/( pre!"o(a! el bo#/(
ac#ual"1ar*
&abel4 . Ac#"+eCell*RoD
(oe(co(#ro$
E(d Sub
6r"+a#e Sub Co--a(d0u##o(3BCl"cC()
Re- Iuel+e a "(d"car el re(gl/( G para e!cr"b"r e( lo! %e:#bo:!

&abel4 . )G)
Ra(ge()aG))*Selec#
%e:#0o:1 . E-p#;
%e:#0o:2 . E-p#;
%e:#0o:3 . E-p#;
%e:#0o:1*Se#,ocu!
E(d Sub
!rivate 4ub &e#t6o#-O,hange)*
0em si nos damos cuenta la etiqueta ; sirve para llevar el rengln donde introducimos los datoso los
modificamos, asi que cada te#tbo# que programemos debe llevar estas lineas.
0ange)PP : Label;*.(ormula0-,- H &e#t6o#-
.nd 4ub
6r"+a#e Sub %e:#0o:2BC=a(ge()
Ra(ge()0) ' &abel4)*,or-ulaR1C1 . %e:#0o:2
E(d Sub
6r"+a#e Sub %e:#0o:3BC=a(ge()
Ra(ge()C) ' &abel4)*,or-ulaR1C1 . %e:#0o:3
E(d Sub
6ueno amigos, espero les sea de provecho los ejemplos mostrados, por lo tanto nos vemos en la pr#ima
edicin, con mas de "acros en .#cel.
MACROS EN EXCEL Parte V
6ienvenidos amigos a la quinta parte de "acros en .#cel y 5isual 6asic, hoy nos toca aprender ms
sobre este interesante curso de "acros, en el cual trabajaremos con grficos en .#cel, veremos como se
puede generar una grfica desde un cdigo generado y alterado por nosotros mismos.
4i observamos los datos que vamos a graficar nos damos cuenta que en la columna A se encuentran
los &al#res eFes 'X) y en la columna B los &al#res series 'D), estos datos son necesarios para efectuar
una grfica que podra quedar as
.sta grfica muestra las edades de < personas, los nombres son l#s &al#res eFes y la edad l#s &al#res
series, ahora veremos como se puede detectar estos datos por medio de una "acro
l graficar estos datos se gener el siguiente cdigo$
4ubMacr#1')
1/ Ran-e'6A2QB1<6)/Select
0/ CAarts/A
=/ Acti&eCAart/CAart(4+e 7 xlC#lumnClustere
continuacin se muestra como se acomodan los datos LGnea ?/
.n esta lnea se muestra la grfica por Ren-ln$
Acti&eCAart/SetS#urce,ata S#urceQ7SAeets'6!#Fa16)/Ran-e'6A2QB1<6)3 Pl#tB4Q7 xlR#Js
.n esta lnea se muestra la grfica por C#lumna$
Acti&eCAart/SetS#urce,ata S#urceQ7SAeets'6!#Fa16)/Ran-e'6A2QB1<6)3 Pl#tB4Q7xlC#lumns

Qsta es la forma en que se muestran los datos de lo que habla la lGnea ?/

La lGnea 2 habla de que si la grfica queda en la misma hoja o simplemente toma una hoja para ella, por
ejemplo$
Acti&eCAart/L#cati#n IAereQ7xlL#cati#nAsNeJSAeet3 NameQ76"raBic# 16
.sta lnea indica que la grafica tenga su propia hoja y que su nombre sea "r8Bic# 1/
.n este ejemplo ejecuto un cdigo con cada una de las caractersticas e#plicadas en las 2 lGneas/

Ra(ge()A?$010))*Selec#
C=ar#!*Add
Ac#"+eC=ar#*C=ar#%;pe . :lColu-(Clu!#ered
Ac#"+eC=ar#*Se#SourceDa#a Source$.S=ee#!()oOa1))*Ra(ge()A?$010))A
6lo#0;$.:lColu-(!
Ac#"+eC=ar#*&oca#"o( <=ere$.:l&oca#"o(A!ObOec#A Na-e$.)oOa1)

Ac#"+eC=ar#*C=ar#%;pe . :l6;ra-"dColClu!#ered
Ac#"+eC=ar#*Se#SourceDa#a Source$.S=ee#!()oOa1))*Ra(ge()A?$010))A
6lo#0;$.:lColu-(!
Ac#"+eC=ar#*&oca#"o( <=ere$.:l&oca#"o(A!NeDS=ee#A Na-e$.)7ra>"co 1)
(i+# e "r8Bic#
C#m# se ac#m#an l#s at#s
C#m# se muestra la -r8Bica3 en este cas# en una sla A#Fa
.labora el siguiente formulario con el siguiente cdigo, para observar los diferentes tipos de grficos y la
forma en que se acomodan los datos$

,i$uFa #s List$#x 4 un B#tn 4 +e-a el ci-# entr# el B#rmulari#/
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Re- e!#e c/d"go ge(era la 7ra>"ca e( la =oOa1
Ra(ge()A?$010))*Selec#
C=ar#!*Add
Ac#"+eC=ar#*C=ar#%;pe . :lColu-(Clu!#ered
Ac#"+eC=ar#*Se#SourceDa#a Source$.S=ee#!()oOa1))*Ra(ge()A?$010))A 6lo#0;$. B
:lColu-(!
Ac#"+eC=ar#*&oca#"o( <=ere$.:l&oca#"o(A!ObOec#A Na-e$.)oOa1)
Re- agrega lo! d">ere(#e! #"po! de gra>"ca al &"!#bo:1
&"!#0o:1*Add8#e- ):lColu-(Clu!#ered)
&"!#0o:1*Add8#e- ):l0arClu!#ered)
&"!#0o:1*Add8#e- ):l&"(eMarCer!)
&"!#0o:1*Add8#e- ):l6"e)
&"!#0o:1*Add8#e- ):lPMSca##er)
&"!#0o:1*Add8#e- ):lAreaS#acCed)
&"!#0o:1*Add8#e- ):lDoug=(u#)
&"!#0o:1*Add8#e- ):lRadarMarCer!)
&"!#0o:1*Add8#e- ):lC;l"(derColClu!#ered)
&"!#0o:1*Add8#e- ):lCo(eColClu!#ered)
&"!#0o:1*Add8#e- ):l6;ra-"dColClu!#ered)
Re- agrega la! d">ere(#e! >or-a! de aco-odar lo! da#o! al &"!#bo:2
&"!#0o:2*Add8#e- )Re(glo()
&"!#0o:2*Add8#e- )Colu-(a)
E(d Sub
6r"+a#e Sub &"!#0o:1BCl"cC()
Re- e!#e c/d"go da el #"po de gra>"ca al dar cl"c e( el &"!#bo:1
8> &"!#0o:1 . ):lColu-(Clu!#ered) %=e( Ac#"+eC=ar#*C=ar#%;pe .
:lColu-(Clu!#ered
8> &"!#0o:1 . ):l0arClu!#ered) %=e( Ac#"+eC=ar#*C=ar#%;pe . :l0arClu!#ered
8> &"!#0o:1 . ):l&"(eMarCer!) %=e( Ac#"+eC=ar#*C=ar#%;pe . :l&"(eMarCer!
8> &"!#0o:1 . ):l6"e) %=e( Ac#"+eC=ar#*C=ar#%;pe . :l6"e
8> &"!#0o:1 . ):lPMSca##er) %=e( Ac#"+eC=ar#*C=ar#%;pe . :lPMSca##er
8> &"!#0o:1 . ):lAreaS#acCed) %=e( Ac#"+eC=ar#*C=ar#%;pe . :lAreaS#acCed
8> &"!#0o:1 . ):lDoug=(u#) %=e( Ac#"+eC=ar#*C=ar#%;pe . :lDoug=(u#
8> &"!#0o:1 . ):lRadarMarCer!) %=e( Ac#"+eC=ar#*C=ar#%;pe . :lRadarMarCer!
8> &"!#0o:1 . ):lC;l"(derColClu!#ered) %=e( Ac#"+eC=ar#*C=ar#%;pe .
:lC;l"(derColClu!#ered
8> &"!#0o:1 . ):lCo(eColClu!#ered) %=e( Ac#"+eC=ar#*C=ar#%;pe .
:lCo(eColClu!#ered
8> &"!#0o:1 . ):l6;ra-"dColClu!#ered) %=e( Ac#"+eC=ar#*C=ar#%;pe .
:l6;ra-"dColClu!#ered
E(d Sub

6r"+a#e Sub &"!#0o:2BCl"cC()
8> &"!#0o:2 . )Re(glo() %=e(
Ac#"+eC=ar#*Se#SourceDa#a Source$.S=ee#!()oOa1))*Ra(ge()A?$010))A
6lo#0;$.:lRoD!
E(d 8>
8> &"!#0o:2 . )Colu-(a) %=e(
Ac#"+eC=ar#*Se#SourceDa#a Source$.S=ee#!()oOa1))*Ra(ge()A?$010))A
6lo#0;$.:lColu-(!
E(d 8>
E(d Sub
ntes de ejecutar esta Macr# llenas los datos anteriores en la hoja- de Excel
.n este archivo hay un ejemplo de un libro de cmo se puede generar una Macr# que realice /< grficas,
esto por medio de un mdulo, este ejemplo es apoyado por su servidor hacia una persona que deseaba
realizar este trabajo. .spero le sea de utilidad el cdigo.
MACROS EN EXCEL Parte VI
6ienvenidos amigos a la se#ta parte de Macr#s en Excel 4 Visual Basic, estamos listos para ver mas
sobre este interesante curso, en este caso veremos como se pueden archivar los datos de una hoja en un
archivo aparte. prenderemos a trabajar con arcAi&#s secu%nciales en Visual Basic. Los arcAi&#s
secu%nciales son aquellos que al registrar sus datos llevan una secuencia, por ejemplo si registro <
nombres llevaran un orden del - al <, en cambio e#isten tambin losarcAi&#s aleat#ri#s, pero ellos no
respetan la secuencia, por ejemplo los < nombres podran quedar en cualquier posicin del -FF en
adelante, del 1FF en adelante, del -F en adelante, de donde quieras ponerlos, tu indicas en donde quieres
que queden los < nombres, pueden quedar hasta separados y no respetar una secuencia.
.l problema de los arcAi&#s secuenciales, es que si introduces algunos smbolos en la captura pueden
alterar el archivo y no funcionar correctamente, por eso se recomienda filtrar los datos con alg9n cdigo o
simplemente no capturar smbolos.
.n esta hoja podemos observar < nombres, la intencin ser archivarlos aparte y hacerlos desparecer de
la hoja, para despus volverlos aparecer en la hoja. esto se le llamara 0egistro de datos y ,onsulta de
datos.
Bremos a Visual Basic con Alt*F11 y Bnsertaremos un 1serF#rm3 en el cual dibujaremos dos botones,
uno con el nombre de Re-istr# y 3tro con el +ombre de C#nsulta.
hora a programar el botn 0egistro, para poder archivar los nombres.
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Re- !e #ra(!lada a la celda a8
Ra(ge()a8))*Selec#
Re- !" (o =a; ("(gN( da#o e( a8 Hue (o arc="+e de (ue+o
8> Ac#"+eCell . E-p#; %=e( 7o%o !al#e
Re- abre u( arc="+o e( la u("dad c co( el (o-bre de da#o!*#:#
Re- e( >or-a de aSad"r %e-poral (Ou#pu#) e( el Rrea de al-ace(a-"e(#o 21
Ope( )c$Eda#o!*#:#) ,or Ou#pu# A! 1
Re- ac#"+a u(a e#"Hue#a para poder regre!ar
regre!a$
Re- e!cr"be el da#o de la celda ac#"+a e( el arc="+o
<r"#e 21A Ac#"+eCell
Re- borra el da#o de la celda
Ac#"+eCell . E-p#;
Re- baOa u( re(gl/( para el !"gu"e(#e (o-bre
Ac#"+eCell*O>>!e#(1A 0)*Selec#
Re- !" la celda e!#a +acFa Hue (o regre!e ;a
8> Ac#"+eCell . E-p#; %=e( 7o%o !al#e
Re- regre!a a e!cr"b"r el !"gu"e(#e (o-bre e( el arc="+o
7o%o regre!a$
!al#e$
Re- !e acabo
Re- c"erra el arc="+o
Clo!e 21
E(d Sub
Los datos quedaran archivados en la unidad y sern devueltos cuando presiones el botn consulta. Due a
continuacin se muestra$
hora a programar el botn consulta
6r"+a#e Sub Co--a(d0u##o(2BCl"cC()
Re- !e #ra(!lada a la celda a8
Ra(ge()a8))*Selec#
Re- abre u( arc="+o e( la u("dad c co( el (o-bre de da#o!*#:#
Re- e( >or-a de &eer ("(pu#) e( el Rrea de al-ace(a-"e(#o 21
Ope( )c$Eda#o!*#:#) ,or 8(pu# A! 1
Re- e!#o !"g(">"ca =a1lo -"e(#ra! (o !ea >"( del arc="+o
Re- e!#o Hu"ere dec"r Hue (o deOe de leer lo! da#o!
Re- =a!#a Hue (o !e llegue al ul#"-o de ello!
Do <="le No# EO,(1)
Re- lee u( da#o
8(pu# 21A (o-bre
Re- lo e!cr"be e( la celda
Ac#"+eCell*,or-ulaR1C1 . (o-bre
Re- baOa u( re(gl/( para el !"gu"e(#e (o-bre
Ac#"+eCell*O>>!e#(1A 0)*Selec#
Re- ac#"+a el c"clo Do <="le4Hue regre!e =a!#a
Re- Hue !e cu-pla la co(d"c"/(
&oop
Re- c"erra el arc="+o
Clo!e 21
E(dSub
Due te parece archivar los datos aparte sin que nadie pueda observarlos, esta es la magia de los archivos
secunciales. .ste ejemplo viene inde#ado en un archivo con el nombre de Macr#s VI.
.l siguiente cdigo archiva el nombre, la direccin y el telfono en el archivo, crea un formulario igual con
dos botones.
6r"+a#e Sub Co--a(d0u##o(1BCl"cC()
Re- !e #ra!lada a la celda a8
Ra(ge()a8))*Selec#
Re- !" (o =a; ("(gN( da#o e( a8 Hue (o arc="+e de (ue+o
8> Ac#"+eCell . E-p#; %=e( 7o%o !al#e
Re- abre u( arc="+o e( la u("dad c co( el (o-bre de da#o!*#:#
Re- e( >or-a de aSad"r %e-poral(ou#pu#) e( el Rrea de al-ace(a-"e(#o 21
Ope( )c$Eda#o!*#:#) ,or Ou#pu# A! 1
Re- ac#"+a u(a e#"Hue#a para poder regre!ar
regre!a$
Re- cap#ura el (o-bre e( u(a +ar"able
(o-bre . Ac#"+eCell
Re- borra el da#o de la celda
Ac#"+eCell . E-p#;
Re- !e -ue+e u(a colu-(a a la derec=a
Ac#"+eCell*O>>!e#(0A 1)*Selec#
Re- cap#ura la d"recc"o( e( u(a +ar"able
d"recc"o( . Ac#"+eCell
Re- borra el da#o de la celda
Ac#"+eCell . E-p#;
Re- !e -ue+e u(a colu-(a a la derec=a
Ac#"+eCell*O>>!e#(0A 1)*Selec#
Re- cap#ura el #ele>o(o e( u(a +ar"able
#ele>o(o . Ac#"+eCell
Re- borra el da#o de la celda
Ac#"+eCell . E-p#;
Re- e!cr"be lo! da#o! (o-breA d"recc"o( ; #ele>o(o e( el arc="+o
<r"#e 21A (o-breA d"recc"o(A #ele>o(o
Re- baOa u( re(gl/( para el !"gu"e(#e (o-bre
Ac#"+eCell*O>>!e#(1A 0)*Selec#
Re- re#rocede do! colu-(a!
Ac#"+eCell*O>>!e#(0A 42)*Selec#
Re- !" la celda e!#a +acFa Hue (o regre!e ;a
8> Ac#"+eCell . E-p#; %=e( 7o%o !al#e
Re- regre!a a e!cr"b"r el !"gu"e(#e (o-bre e( el arc="+o
7o%o regre!a$
!al#e$
Re- !e acabo
Re- c"erra el arc="+o
Clo!e 21
E(d Sub
6r"+a#e Sub Co--a(d0u##o(2BCl"cC()
Re- !e #ra(!lada a la celda a8
Ra(ge()a8))*Selec#
Re- abre u( arc="+o e( la u("dad c co( el (o-bre de da#o!*#:#
Re- e( >or-a de &eer ("(pu#) e( el Rrea de al-ace(a-"e(#o 21
Ope( )c$Eda#o!*#:#) ,or 8(pu# A! 1
Re- e!#o !"g(">"ca =a1lo -"e(#ra! (o !ea >"( del arc="+o
Re- e!#o Hu"ere dec"r Hue (o deOe de leer lo! da#o!
Re- =a!#a Hue (o !e llegue al ul#"-o de ello!
Do <="le No# EO,(1)
Re- lee lo! da#o!
8(pu# 21A (o-breA d"recc"o(A #ele>o(o
Re- e!cr"be e( la celda el (o-bre
Ac#"+eCell*,or-ulaR1C1 . (o-bre
Re- !e -ue+e u(a colu-(a a la derec=a
Ac#"+eCell*O>>!e#(0A 1)*Selec#
Re- e!cr"be e( la celda la d"recc"o(
Ac#"+eCell*,or-ulaR1C1 . d"recc"o(
Re- !e -ue+e u(a colu-(a a la derec=a
Ac#"+eCell*O>>!e#(0A 1)*Selec#
Re- e!cr"be e( la celda el #ele>o(o
Ac#"+eCell*,or-ulaR1C1 . #ele>o(o
Re- baOa u( re(gl/( para el !"gu"e(#e (o-bre
Ac#"+eCell*O>>!e#(1A 0)*Selec#
Re- re#rocede do! colu-(a!
Ac#"+eCell*O>>!e#(0A 42)*Selec#
Re- ac#"+a el c"clo Do <="le4Hue regre!e =a!#a
Re- Hue !e cu-pla la co(d"c"/(
&oop
Re- c"erra el arc="+o
Clo!e 21
E(d Sub
.ste ejemplo viene en el archivo Macr#s VI>0/
&ambin se puede consultar sin necesidad de leer los datos en la hoja, esto quiere decir leyendo directo
del archivo y trayendo los datos al formulario, en el siguiente ejemplo, se programa el botn consulta en
formulario.
2ibuja el siguiente formulario, los dos primeros botones es el mismo cdigo anterior, pero el tercer botn
incluye el siguiente cdigo$
6r"+a#e Sub Co--a(d0u##o(3BCl"cC()
Ope( )c$Eda#o!*#:#) ,or 8(pu# A! 1
Do <="le No# EO,(1)
8(pu# 21A (o-breA d"recc"o(A #ele>o(o
8> (o-bre . %e:#0o:1 %=e(
%e:#0o:2 . d"recc"o(
%e:#0o:3 . #ele>o(o
E(d 8>
&oop
Clo!e 21
E(d Sub
.ste ejemplo viene en el archivo Macr#s VI>=
4lo ejecute el formulario y escriba el nombre que desea consultar y presione el tercer botn.
%sted podr consultar cualquiera de los nombres que se encuentren dentro del archivo, sin necesidad de
que e#istan en la hoja, claro esta que primero es necesario presionar el botn registro para archivarlos,
pero despus se pueden manipular.
6ueno espero que sea de su agrado esta parte y que practiquen mucho los archivos secuenciales.

Vous aimerez peut-être aussi