You are on page 1of 50

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 su servidor, 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 termino$
%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 bajo de celda o cambio 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.
7. 2a clic en el botn "uarar Macr#, el que tiene la ruedita zul. 8indo9s 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
min:scula, porque si activa las may:sculas 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. si 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
min:sculas*. La macro se activara cuando este lista con la tecla C#ntr#l * a
>. 2e clic en el B#tn Ace+tar. 8indo9s 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 llamara ,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
-A. !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 Berramientas de Visual Basic/ .l que
tiene el cuadrito azul presionado.
Listo .#cel guardo los pasos en la "acro- que se activara presionado la tecla C#ntr#l * a
-1. .scribe otro nombre en la celda C1 y presiona Enter, despus regresa a la celda C1.
-7. !resiona la tecla C#ntr#l * a. 8indo9s 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 efectuara 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.
!ractica C
Denera las siguientes "acros$
Draba una Macr# que se active con C#ntr#l * $ y que esta macro permita abrir un archivo
Draba una Macr# que se active con C#ntr#l * c y que esta macro permita insertar un 8ordrt
"uchos pensaran que esto no es nada pero ya veremos mas 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 Berramientas Visual Basic/ Excel muestra el
cuadro de 2ialogo Drabar "acro
1. en la opcin M%t## A$re&ia# escriba la letra r, por lo tanto la macro se llamara con C#ntr#l
* r
7. !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, 3bservmoslos$
>. !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 esta bien instalado o se a borrado. &ambin
puede acceder desde el Men !erramientas3 Macr# 4 Eit#r e Visual Basic.
?. ctive los siguientes cuadros o ventanas$
2e clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
2e 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 vallamos 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 activara debajo de Mul#s la 3pcin M#ul#1
-A. 2e doble clic en M#ul#1. 4e mostrara en el .ditor de 5isual 6asic el cdigo de la macro que
grabamos de la siguiente forma$
4ub "acro-)*
E
E "acro- "acro
E "acro grabada el A?FA7F/AA- por 0"3+ ".+23G 3,B3
E
E cceso directo$ ,&0L;r
E
0ange)H-H*.4elect
ctive,ell.(ormula0-,- I H0amnH
0ange)H/H*.4elect
.nd 4ub
Jue es lo que significa esto 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 tomara en cuenta que es solo te#to o
comentarios y ese te#to debe de aparecer en un color, ya sea el color verde.
Ran-e'6A16)/Select Cndica 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.
Jue crees que pasara aqu con nuestra "acro$
4ub "acro-)*
E
E "acro- "acro
E "acro grabada el A?FA7F/AA- por 0"3+ ".+23G 3,B3
E
E cceso directo$ ,&0L;r
E
0ange)H-H*.4elect
ctive,ell.(ormula0-,- I H0amnH
0ange)H6-H*.4elect
ctive,ell.(ormula0-,- I H,alle /- de "arzo K/?AH
0ange)H,-H*.4elect
ctive,ell.(ormula0-,- I H1-L/L7>L-1H
0ange)H2-H*.4elect
ctive,ell.(ormula0-,- I H+ogales 4onoraH
0ange)H.-H*.4elect
ctive,ell.(ormula0-,- I H,3+L.! +3DL.4H
.nd 4ub
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 de clic en el $#tn Micr#s#Bt Excel que se encuentra
activado en la barra de tareas y cuando dese volver al editor de 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.
Jue te parece es sencillo o +oM, ,laro necesitamos practicar bastante para dominar esto, as que repasa
la Fase 0 cuantas veces sea necesario, otra cosa no trates de generar cdigos muy complejos en tus
macros porque te vas a enredar, poco a poco se va lejos.
!ractica CC
Denera una Macr# que escriba un nombre en una celda y lo ponga negrita y observa el Ci-#.
Denera una Macr# que escriba un nombre en una celda y lo ,entre y observa el Ci-#.
Denera una Macr# que escriba un nombre en una celda y cambie el tama'o de la letra a /A puntos y observa el
Ci-#.
,digos "s comunes$
(raslaarse a una Cela
0ange)H-H*.4elect
Escri$ir en una Cela
ctivecell.(ormula0-,-IH0amonH
Letra Ne-rita
4election.(ont.6old I &rue
Letra Cursi&a
4election.(ont.Ctalic I &rue
Letra Su$ra4aa
4election.(ont.%nderline I #l%nderline4tyle4ingle
Centrar (ext#
8ith 4election
.Borizontallignment I #l,enter
.nd 8ith
Alinear a la i9Cuiera
8ith 4election
.Borizontallignment I #lLeft
.nd 8ith
Alinear a la ,erecAa
8ith 4election
.Borizontallignment I #l0ight
.nd 8ith
(i+# e Letra'Fuente)
8ith 4election.(ont
.+ame I HDaramondH
.nd 8ith
(ama.# e Letra'(ama.# e Fuente)
8ith 4election.(ont
.4ize I -<
.nd 8ith
C#+iar
4election.,opy
Pe-ar
ctive4heet.!aste
C#rtar
4election.,ut
Orenar Ascenente
4election.4ort Ney-$I0ange)H-H*, 3rder-$I#lscending, Beader$I#lDuess, O
3rder,ustom$I-, "atch,ase$I(alse, 3rientation$I#l&op&o6ottom
Oren ,escenente
4election.4ort Ney-$I0ange)H-H*, 3rder-$I#l2escending, Beader$I#lDuess, O
3rder,ustom$I-, "atch,ase$I(alse, 3rientation$I#l&op&o6ottom
Buscar
,ells.(ind)8hat$IHRam#nH, fter$Ictive,ell, LooPCn$I#l(ormulas, LooPt O
$I#l!art, 4earch3rder$I#l6y0o9s, 4earch2irection$I#l+e#t, "atch,ase$I O
(alse*.ctivate
Insertar Fila
4election..ntire0o9.Cnsert
Eliminar Fila
4election..ntire0o9.2elete
Insertar C#lumna
4election..ntire,olumn.Cnsert
Eliminar C#lumna
4election..ntire,olumn.2elete
A$rir un Li$r#
8orPbooPs.3pen (ilename$IH,$Q"is documentosQ&ie# saBe =/xlsH
"ra$ar un Li$r#
ctive8orPbooP.4aves (ilename$IH,$Q"is documentosQ+iscis/xlsH, (ile(ormat O
$I#l+ormal, !ass9ord$IHH, 8rite0es!ass9ord$IHH, 0ead3nly0ecommended$I O
(alse, ,reate6acPup$I(alse
.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 practica 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'are 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 "uestro como crear un formulario y como programarlo$
-. !resione La &eclas Alt * F113 para entrar al editor de Visual Basic.
/. ctiva las siguientes opciones$
2e clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
2e clic en el Men &er 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.
&ambin cuando de clic en el (ormulario 1SERFORM1 se debe de activar el Cuar# e
!erramientas, si no se activa de clic en el Men Ver y elija la opcin Cuar# e !erramientas.
7. .lija del Cuar# e !erramientas el ,ontrol EtiCueta el que tiene la A y rrastre dibujando
en el (ormulario 1SERFORM1 la etiqueta. Juedara 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 de estar vaco y su nombre ser (ext$#x1, el nombre solo
aparecer en el control.
=. Baga los dos pasos anteriores igualmente poniendo ,ireccin en la La$el0 y (el%B#n# en la
La$el= y tambin dib:jeles 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 quitara el error. !uedes ponerle cualquier nombre en lugar de Label-.
S#l# altera est# si te marca err#r3 si NO %Fal# asG/
Los controles como las .tiquetas y ,uadros de &e#tos pueden modificrseles algunas opciones 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 el nombre 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 quedara el (ormulario formado por los controles$
?. hora de doble clic sobre el control (ext$#x1 para programarlo y despus inserte el siguiente
cdigo$
!rivate 4ub &e#t6o#-O,hange)*
Ran-e'6AH6)/Select
Acti&eCell/F#rmulaR1C1 7 (extB#x1
.nd 4ub
.sto indica que se valla a AH y escriba lo que hay en el (ext$#x1
N#ta.LLo que esta en azul lo genera .#cel automticamente, usted solo escribir lo que esta 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#.
@. hora de doble clic sobre el control (ext$#x0 para programarlo y despus inserte el siguiente
cdigo$
!rivate 4ub &e#t6o#/O,hange)*
Ran-e'6BH6)/Select
Acti&eCell/F#rmulaR1C1 7 (extB#x0
.nd 4ub
.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#.
-A. hora de doble clic sobre el control (ext$#x= para programarlo y despus inserte el siguiente
cdigo$
!rivate 4ub &e#t6o#1O,hange)*
Ran-e'6CH6)/Select
Acti&eCell/F#rmulaR1C1 7 (extB#x0
.nd 4ub
.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 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 B#tn e C#man# para programarlo y despus inserte el
siguiente cdigo$
!rivate 4ub ,ommand6utton-O,licP)*
Rem inserta un ren-ln
Selecti#n/EntireR#I/Insert
Rem Em+t4 Lim+ia L#s (ext$#x
(extB#x1 7 Em+t4
(extB#x0 7 Em+t4
(extB#x= 7 Em+t4
Rem (ext$#x1/SetF#cus En&Ga el curs#r al (ext$#x1 +ara &#l&er a ca+turar l#s at#s
(extB#x1/SetF#cus
.nd 4ub
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 1serJF#rm que se encuentra en la barra de herramientas o
simplemente la tecla de funcin F2
4e activara el 1serB#rm1 y todo lo que escriba en los &e#tbo# se escribir en .#cel y cuando
presione el botn Cnsertar, se insertara un rengln y se vaciaran los &e#tbo# y despus se mostrara
el cursor en el (ext$#x1.
.n este archivo que usted bajo se encuentra una hoja de .#cel Libre de 5irus o sea que esta limpio,
bralo sin ning:n problema, ya que ah viene un ejemplo de la "acro ya realizada y solo la
ejecutara y vera como trabajan las "acros. .spero y ests pendiente porque vienen mas partes
sobre este interesante curso de "acros.
MACROS EN EXCEL
Parte II
Bola amigos, estamos de nuevo aqu para mostrar la segunda parte de "uGa e Macr#s en Excel que te
ser de gran utilidad, ya que se manejaran F#rmulas en los (ormularios, BsCueas e (ext# y El
Asistente e Kin#Is. .ntonces empecemos migos.
(RABALAN,O CON FORM1LAS
.s de suma importancia saber aplicar F#rmulas en Macr#s e Excel, ya que la mayora de las hojas de
clculos las involucran, por ejemplo los Cnventarios, las +ominas o cualquier otro tipo de hoja las
llevan, es por eso que en la siguiente Fase se muestra como manejar F#rmulas en Macr#s e Excel.
Fase I
7. !resione La &eclas Alt * F113 para entrar al editor de Visual Basic.
<. ctiva las siguientes opciones$
2e clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
2e clic en el Men &er y elija la opcin Ventana Pr#+ieaes
=. 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 crearas un formulario con el siguiente aspecto$
el formulario tendr$
&res etiquetas
&res &e#tbo#
%n 6otn de ,omando
Los datos que se preguntaran 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$
!rivate 4ub ,ommand6utton-O,licP)*
4election..ntire0o9.Cnsert
&e#t6o#- I .mpty
&e#t6o#/ I .mpty
&e#t6o#1 I .mpty
&e#t6o#-.4et(ocus
.nd 4ub
!rivate 4ub &e#t6o#-O,hange)*
0ange)H@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#-
.nd 4ub
!rivate 4ub &e#t6o#/O,hange)*
0ange)H6@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#/
0em aqu se crea la (ormula
&e#t6o#1 I 5al)&e#t6o#/* R 1=<
0em .l &e#tbo#1 guardara el total de la multiplicacin del &e#tbo#/ por 1=<
0em .l ,omando 5al permite convertir un valor de &e#to a un 5alor +umrico
0em .sto se debe a que los &e#tbo# no son +umricos y debemos de ,onvertirlos
.nd 4ub
!rivate 4ub &e#t6o#1O,hange)*
0ange)H,@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#1
.nd 4ub
.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 :nicamente y no afecta a la programacin.
.ste rchivo de esta Macr# se llama Macr#s e Ea y viene incluido aqu.
Deneraremos 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.
Denera el siguiente cdigo$
!rivate 4ub ,ommand6utton-O,licP)*
4election..ntire0o9.Cnsert
&e#t6o#- I .mpty
&e#t6o#/ I .mpty
&e#t6o#1 I .mpty
&e#t6o#-.4et(ocus
.nd 4ub
!rivate 4ub &e#t6o#-O,hange)*
0ange)H@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#-
.nd 4ub
!rivate 4ub &e#t6o#/O,hange)*
0ange)H6@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#/
.nd 4ub
!rivate 4ub &e#t6o#1O,hange)*
0ange)H,@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#1
.nd 4ub
!rivate 4ub &e#t6o#7O,hange)*
0ange)H2@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#7
0em aqu se crea la formula
&e#t6o#< I 5al)&e#t6o#/* R 5al)&e#t6o#1* ; 5al)&e#t6o#7*
0em .l &e#t6o#< guardara el total
.nd 4ub
!rivate 4ub &e#t6o#<O,hange)*
0ange)H.@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#<
.nd 4ub
,uando se introduzca el 6onos automticamente se generara el 4ueldo +eto.
.ste ejemplo viene en el rchivo Macr#s e Suel# Net#
B1SAN,O INFORMACIMN 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$
!rivate 4ub &e#t6o#-O,hange)*
0ange)Ha@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#-
.nd 4ub
!rivate 4ub ,ommand6utton-O,licP)*
,ells.(ind)8hat$I(extB#x1, fter$Ictive,ell, LooPCn$I#l(ormulas, LooPt O
$I#l!art, 4earch3rder$I#l6y0o9s, 4earch2irection$I#l+e#t, "atch,ase$I O
(alse*.ctivate
.nd 4ub
4i te fijas inclu en la programacin del B#tn Buscar AA#ra que buscara lo que en el &e#tbo#- a la
hora de !resionarse.
.ste proceso viene en el rchivo ,ompleto Macr#0
(RABALAN,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, Bacer !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 Cgual despus de
ssistant.nimation I aparecer un men: 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 tu
contestes. La variable t guardara el valor de la respuesta, si el valor es L1 significa que es 4i y por lo
tanto borrara el rengln.
8ith ssistant.+e96alloon
.&e#t I H2eseas 6orrar este 0egistroH
.6utton I mso6utton4etSes+o
.Beading I HdvertenciaH
t I .4ho9
.nd 8ith
Cf t I L1 &hen
ssistant.nimation I msonimation.mpty&rash
4election..ntire0o9.2elete
.nd Cf
.ste ejemplo viene en el archivo Macr#0
4i deseas que siga saliendo esta gua solo escrbeme pidiendo que sigan saliendo ejemplos.
http$FFconalep.cjb.net
http$FF999.geocities.comFconalepnogales
Basta !ronto migos, recomienda este curso a otros amigos.
!rofesor 0amn "endoza 3choa
MACROS EN EXCEL
Parte III
Bola 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 estaTT. UUU"ucho nimoUUU.
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$
2e clic en el Men Ver y elija la opcin Ex+l#ra#r e Pr#4ect#s
2e clic en el Men &er y elija la opcin Ventana Pr#+ieaes
@. 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 crearas un formulario con el siguiente aspecto$
el formulario tendr$
&res etiquetas
&res &e#tbo#
&res 6otones de ,omando
Los datos que se preguntaran sern N#m$re3 ,ireccin 4 (el%B#n#. Los tres botones nos servirn para
lo siguiente$ C#nsultar consultara la informacin que hayamos insertado desde el botn insertar. BaFa
podr eliminar alg:n dato que se consulto y no lo queremos. Insertar tendr la funcin de insertar los
registros que vayamos dando de alta, es como los ejercicios anteriores. continuacin se muestra
como se deben de programar estos ,ontroles$
!rogramacin de los ,ontroles$
BO(ON ,E CONS1L(A
!rivate 4ub ,ommand6utton-O,licP)*
,ells.(ind)8hat$I(extB#x1, fter$Ictive,ell, LooPCn$I#l(ormulas, LooPt O
$I#l!art, 4earch3rder$I#l6y0o9s, 4earch2irection$I#l+e#t, "atch,ase$I O
(alse*.ctivate
ctive,ell.3ffset)A, -*.4elect
&e#t6o#/ I ctive,ell
0em la lnea que contiene el Acti&eCell/OBBset'<3 1)/Select permite moverse una columna a la derecha,
por lo tanto despus de la b:squeda de las primeras lneas con Cell/Fin si encuentra el +ombre de la
persona se mueve a la siguiente columna y la lnea (extB#x0 7 Acti&eCell !ermite capturar el valor de
la celda al (ext$#x0 y as mostrar el dato de la celda en el (extB#x0/
ctive,ell.3ffset)A, -*.4elect
&e#t6o#1 I ctive,ell
0em ,ada vez que se escriba la lnea Acti&eCell/OBBset'<3 1)/Select significa que se tiene que moverse
una columna a la derecha.
0em 4i el nombre que tratas de consultar no se encuentra podra generar un error porque fallara el
,ell.(ind esto puede ocurrir en el 8ord @>, yo trabajo con el 8ord /AAA o V! y no tengo ese
problema. !ero esto se solucionara con una trampa de error.
.nd 4ub
BO(ON BALA
!rivate 4ub ,ommand6utton/O,licP)*
4election..ntire0o9.2elete
0ange)H@H*.4elect
&e#t6o#- I .mpty
&e#t6o#/ I .mpty
&e#t6o#1 I .mpty
&e#t6o#-.4et(ocus
.nd 4ub
BO(ON INSER(AR
!rivate 4ub ,ommand6utton1O,licP)*
0ange)H@H*.4elect
4election..ntire0o9.Cnsert
&e#t6o#- I .mpty
&e#t6o#/ I .mpty
&e#t6o#1 I .mpty
&e#t6o#-.4et(ocus
.nd 4ub
C1A,ROS ,E (EX(O
!rivate 4ub &e#t6o#-O,hange)*
0ange)H@H*.(ormula0-,- I &e#t6o#-
0em esta primer lnea reemplaza a estas dosTT que te parece todava mas corta
0ange)H@H*.4elect
ctive,ell.(ormula0-,- I &e#t6o#-
.nd 4ub
!rivate 4ub &e#t6o#/O,hange)*
0ange)H6@H*.(ormula0-,- I &e#t6o#/
.nd 4ub
!rivate 4ub &e#t6o#1O,hange)*
0ange)H,@H*.(ormula0-,- I &e#t6o#1
.nd 4ub
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(ON ,E CONS1L(A
!rivate 4ub ,ommand6utton-O,licP)*
On Err#r "#t# n#enc#ntr#
0em esta lnea genera una trampa de error si .#cel encuentra un error se le dice que se vaya a la
etiqueta n#enc#ntr# que esta definida mas adelante en el cdigo. +o use la trampa de error si no tiene
problemas a la hora de que no encuentra a la persona. 0ecuerde si usted comete cualquier error .#cel
se dirigir a la etiqueta n#enc#ntr#.y esquivara cualquier error, hasta uno que usted cometa en la
programacin.
,ells.(ind)8hat$I(extB#x1, fter$Ictive,ell, LooPCn$I#l(ormulas, LooPt O
$I#l!art, 4earch3rder$I#l6y0o9s, 4earch2irection$I#l+e#t, "atch,ase$I O
(alse*.ctivate
Acti&eCell/OBBset'<3 1)/Select
(extB#x0 7 Acti&eCell
Acti&eCell/OBBset'<3 1)/Select
(extB#x= 7 Acti&eCell
0em &ambin se puede utilizar este cdigo para leer la informacin de las celdas lo que esta en azul.
La diferencia es que se asignan los valores a variables y despus se descargan a los &e#t6o#s.
Acti&eCell/OBBset'<3 1)/Select
,irecci#n 7 Acti&ecell
Acti&eCell/OBBset'<3 1)/Select
(eleB#n# 7 Acti&ecell
(extB#x0 7 ,irecci#n
(extB#x= 7 (eleB#n#
n#enc#ntr#N
0em qu se esquiva el error
.nd 4ub
Jue te parece es increble como una "acro combinada con 5isual 6asic puede hacer hasta lo
imposible
6ueno ya tenemos elaborado un ejercicio de consultas de datos, ahora accesaremos 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 M#ul#, por lo tanto debers seguir los siguientes pasos$
2e clic en el Men Insertar y elija la opcin M#ul#
.scriba dentro del M#ul# el nombre del modulo en este caso Su$ Entraa
,uando usted escriba 4ub .ntrada aparecer de la siguiente manera$
4ub .ntrada)*
Load %ser(orm-
%ser(orm-.4ho9
.nd 4ub
%sted deber escribir las dos lneas que estn en medio que son$
L#a 1serF#rm1
1serF#rm1/SA#I
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 modulo 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 M#ul# que creamos.
si queremos volver al formulario solo da doble clic en 1serF#rm1
6ueno ya esta listo ahora salgamos del Eit#r e Visual Basic y volvamos a Excel/
2e clic en el Men ArcAi&# del Eit#r e Visual Basic
.lija la opcin Cerrar 4 &#l&er a Micr#s#Bt Excel
Sa que estamos en Excel, podemos insertar una imagen o un botn o cualquier grafico, por ejemplo$
2e 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.
2e clic derecho sobre la Cmagen
.lija la opcin Asi-nar Macr#
2e clic en la Macr# que se llama Entraa, es obvio la :nica que hicimos
2e ,lic en Ace+tar
2e clic fuera de la imagen en cualquier celda y listo si presionas la imagen cargara el
formulario.
MACROS EN EXCEL
Parte IV
Bola migos, despus de un largo periodo de ausencia de la guas, nos volvemos a activar con mas
ganas y mas "acros de .#cel y 5isual 6asic en ccin, en este nueva entrega veremos como trabajar
con Listbo# y ,ombobo#, que son listas de opciones y cuadro de opciones, tambin aprenderemos
como ejecutar una hoja de .#cel y activar automticamente un "acro, como ordenar informacin,
como convertirla en may:scula o min:scula y como crear modificacin automtica de V informacin.
6ien sabemos que en este nuevo sitio tendremos un foro de preguntas y respuestas para participar, y
resolveremos algunas dudas de sus problemas, claro esta que la direccin de enlace es$
si la direccin llegara a cambiar se avisara en la pagina con tiempo. !ero por mientras ese ser el
enlace.
6ueno empezaremos con como 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. Cnserta %n C#m$#$#x 4 un List$#x y un B#tn.
hora que ya creaste la Cnterfaz 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.
!rivate 4ub ,ommand6utton-O,licP)*
C#m$#B#x1/AItem 6Luan L#se6
C#m$#B#x1/AItem 6Per# e la Fuente6
C#m$#B#x1/AItem 6Sal&a#r e la Lu96
ListB#x1/AItem 6Luan L#s%6
ListB#x1/AItem 6Per# e la Fuente6
ListB#x1/AItem 6Sal&a#r e la Lu96
.nd 4ub
6ueno vamos a analizar el significado de estas lneas$
C#m$#B#x1/AItem 6Luan L#s% 6
La opcin AItem significa que vas a agregar un dato de te#to, por lo tanto se entiende como vas a
agregar a Wuan Wos 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 ddCtem, 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 seg:n tus necesidades.
hora si deseas agregar n:meros a un ,ombobo# o List6o# escribe el siguiente cdigo en un botn$
!rivate 4ub ,ommand6utton-O,licP)*
F#r X71 t# 2<
List$#x1/AItem str'x)
Next
.nd 4ub
La Cnstruccin 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 <A y lo que se encuentre dentro del ciclo F#r>Next se
ejecutara el n:mero de veces, la V es una variable numrica que guarda el valor, cada vez que el ciclo
da una vuelta aumenta un numero, por lo tanto V va a valer desde - hasta <A, y la instruccin Str es
para convertir el valor numrico de la V en valor de &e#to, ya que la opcin AItem guarda solo
te#to, claro esta que tambin puede funcionar sin esta instruccin en algunos casos.
!or lo tanto el Listbo#- va a guardar los n:mero del - al <A, sin necesidad de irlos poniendo de uno por
uno, imagnatelo.
List$#x1/AItem O1P
List$#x1/AItem O0P
List$#x1/AItem O=P
Sa te quiero ver en el cdigo para que llegues al <A, 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$
!rivate 4ub List6o#-O,licP)*
Ran-e'6aH6)/Select
Acti&eCell/F#rmulaR1C1 7 ListB#x
.nd 4ub
s de de fcil cada vez que escojas un dato que se encuentre en un List$#x1 lo enviara a la celda aH,
escribindolo ah. 4i lo deseas hacer lo puedes hacer en un ,ombobo#, solo cambia List$#x1 por
C#m$#$#x1 y se acabo.
hora si deseas agregar los datos al List$#x o C#m$#$#x sin ning:n botn que presionar escribe el
siguiente cdigo$
!rivate 4ub %ser(ormOctivate)*
C#m$#B#x1/AItem 6Luan L#se6
C#m$#B#x1/AItem 6Per# e la Fuente6
C#m$#B#x1/AItem 6Sal&a#r e la Lu96
ListB#x1/AItem 6Luan L#s%6
ListB#x1/AItem 6Per# e la Fuente6
ListB#x1/AItem 6Sal&a#r e la Lu9
.nd 4ub
La ,lave esta en el procedimiento 1serF#rmQActi&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 y
C#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$
!rivate 4ub ,ommand6utton-O,licP)*
Ran-e'6aH6)/Select
,# KAile Acti&eCell RS Em+t4
Acti&eCell/OBBset'13 <)/Select
ListB#x1/AItem Acti&eCell
L##+
.nd 4ub
(jate bien, primeramente muevo el rango a la celda aH porque ah esta el inicio de mi informacin,
despus la lnea ,# KAile Acti&ecellRS Em+t4 significa Bazlo 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 ,# KAile3 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 ,# KAile 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)/Select3 quiere decir que se mueva por columna, no por rengln.
Acti&eCell/OBBset'Ren-ln3 C#lumna)/Select
4i cambias el - por otro numero se mover el numero de veces que tu le indiques, por ejemplo si quiero
bajar -A renglones de un golpe$
Acti&eCell/OBBset'1<3 <)/Select
4i quiero moverme /A 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$
4ub utoOopen)*
L#a 1serF#rm1
1serF#rm1/SA#I
.nd 4ub
La magia esta en el procedimiento Aut#Q#+en') que permite ejecutar automticamente lo que se
encuentre dentro de el 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 el$
4i se fijan en la siguiente pantalla tengo datos en una hoja que empinan en el rengln A1< y terminan
en C1T, 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-
!rivate 4ub C#mmanButt#n1QClicU')
Rem este ci-# l#cali9a el ultim# re-istr# +#r mei# el ren-ln
Ran-e'6a1<6)/Select
,# KAile Acti&eCell RS Em+t4
Acti&eCell/OBBset'13 <)/Select
L##+
Rem lle-a Aasta el a1@ #ne n# Aa4 inB#rmacin 4 se re-resa un ren-ln +ara ser exact# c#n la
si-uiente lGnea/
Acti&eCell/OBBset'>13 <)/Select
Rem este ci-# l#cali9a la ltima c#lumna el ltim# at#
,# KAile Acti&eCell RS Em+t4
Acti&eCell/OBBset'<3 1)/Select
L##+
Acti&eCell/OBBset'<3 >1)/Select
Rem esta lGnea -uara en la &aria$le celaacti&a la cela exacta #ne esta el ultim# at# e la
ultima c#lumna e inB#rmacin3 en este cas# C1T/
celaacti&a 7 Acti&eCell/Aress
Rem este ci-# t#ma el ran-# ese A1< #ne em+ie9a la inB#rmacin3 Aasta #ne enc#ntr el
ultim# at# C1T3 Cue l# -uara la &aria$le celaacti&a/ Selecci#na e A1< Aasta C1T/
Ran-e'6A1<N6 * celaacti&a)/Select

Rem este ci-# #rena l#s at#s en #ren ascenente3 el ci-# Bue -enera# en Excel3 asG Cue si
n# sa$es -enerarl# s#l# c#+ial# e aCuG/
Selecti#n/S#rt Ve41N7Ran-e'6A1<6)3 Orer1N7xlAscenin-3 !eaerN7xl"uess3 Q
OrerCust#mN713 MatcACaseN7False3 Orientati#nN7xl(#+(#B#tt#m
.nd 4ub
s es como funciona este cdigo de "acros de .#cel ordenando e#actamente desde -A hasta donde
estn los datos finales.
6ueno ahora para convertir la informacin a "in:scula o "ay:scula es muy parecido el cdigo, solo
obsrvalo$
!rivate 4ub C#mmanButt#n1QClicU')
0ange)Ha-AH*.4elect
2o 8hile ctive,ell XY .mpty
ctive,ell.(ormula0-,- I LCase)ctive,ell*
ctive,ell.3ffset)-, A*.4elect
Loop
.nd 4ub
s es la magia esta en Lcase que convierte a "in:sculas y 1case a "ay:sculas, empieza en -A y
hasta que no encuentra datos deja de convertir a "in:sculas.
.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 @ dentro.
,rea la siguiente Cnterfaz, 7 .tiquetas, 1 &e#tbo# y 1 6otones
,opia el siguiente cdigo$
!rivate 4ub ,ommand6utton-O,licP)*
Rem si n# se escri$e naa en l#s (ext$#xs a la A#ra e insertar escri$e N# (iene
Cf &e#t6o#- I .mpty &hen 0ange)H@H*.(ormula0-,- I H+o &ieneH
Cf &e#t6o#/ I .mpty &hen 0ange)H6@H*.(ormula0-,- I H+o &ieneH
Cf &e#t6o#1 I .mpty &hen 0ange)H,@H*.(ormula0-,- I H+o &ieneH
0ange)H@H*.4elect
4election..ntire0o9.Cnsert
&e#t6o#- I .mpty
&e#t6o#/ I .mpty
&e#t6o#1 I .mpty
&e#t6o#-.4et(ocus
.nd 4ub
!rivate 4ub ,ommand6utton/O,licP)*
3n .rror Do&o noencontro
Rem Ci-# +ara $uscar3 4a l# c#n#cem#s
,ells.(ind)8hat$I&e#t6o#-, fter$Ictive,ell, LooPCn$I#l(ormulas, LooPt O
$I#l!art, 4earch3rder$I#l6y0o9s, 4earch2irection$I#l+e#t, "atch,ase$I O
(alse*.ctivate
ctive,ell.3ffset)A, -*.4elect
&e#t6o#/ I ctive,ell
ctive,ell.3ffset)A, -*.4elect
&e#t6o#1 I ctive,ell
Rem la etiCueta ? t#ma el &al#r el ren-ln acti&# 4 +ermite m#iBicar la inB#rmacin Cue
enc#ntr3 4a Cue m#iBiCues la inB#rmacin +resi#nas el $#tn actuali9ar/
Label7 I ctive,ell.0o9
noencontro$
.nd 4ub
!rivate 4ub ,ommand6utton1O,licP)*
Rem Vuel&e a inicar el ren-ln H +ara escri$ir en l#s (ext$#xs
Label7 I H@H
0ange)Ha@H*.4elect
&e#t6o#- I .mpty
&e#t6o#/ I .mpty
&e#t6o#1 I .mpty
&e#t6o#-.4et(ocus
.nd 4ub
!rivate 4ub &e#t6o#-O,hange)*
Rem si n#s am#s cuenta la etiCueta ? sir&e +ara lle&ar el ren-ln #ne intr#ucim#s l#s at#s
# l#s m#iBicam#s3 asi Cue caa text$#x Cue +r#-ramem#s e$e lle&ar estas lineas/
0ange)HH ; Label7*.(ormula0-,- I &e#t6o#-
.nd 4ub
!rivate 4ub &e#t6o#/O,hange)*
0ange)H6H ; Label7*.(ormula0-,- I &e#t6o#/
.nd 4ub
!rivate 4ub &e#t6o#1O,hange)*
0ange)H,H ; Label7*.(ormula0-,- I &e#t6o#1
.nd 4ub
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 mas
sobre este interesante curso de "acros, en el cual trabajaremos con grficos en .#cel, veremos como se
puede generar una grafica 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 necesario para efectuar una
grafica que podra quedar as
.sta grafica 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 genero el siguiente cdigo$
4ub Macr#1')
1/ Ran-e'6A2NB1<6)/Select
0/ CAarts/A
=/ Acti&eCAart/CAart(4+e 7 xlC#lumnClustere
?/ Acti&eCAart/SetS#urce,ata S#urceN7SAeets'6!#Fa16)/Ran-e'6A2NB1<6)3 Pl#tB4N7 QxlC#lumns
2/ Acti&eCAart/L#cati#n KAereN7xlL#cati#nAsO$Fect3 NameN76!#Fa16
.nd 4ub
-. La primer lnea indica el rango donde estn los datos, &al#res eFes 4 &al#res series,
/. La segunda lnea indica que se agrega una grafica
1. La tercera lnea indica el tipo de grafica que se desea
7. La cuarta lnea indica como se acomodan los datos en la grafica
<. La quinta lnea indica donde se muestra la grafica, si en la misma hoja o en una sola hoja.
N#ta/ Los n:meros de - al < no van en el cdigo, solo los puse para poder e#plicar las lneas
continuacin se muestran algunos de los diferentes tipos de graficas LGnea =$
Acti&eCAart/CAart(4+e 7 xlC#lumnClustere
Acti&eCAart/CAart(4+e 7 xlBarClustere
Acti&eCAart/CAart(4+e 7 xlLineMarUers
Acti&eCAart/CAart(4+e 7 xlPie
Acti&eCAart/CAart(4+e 7 xlXDScatter
Acti&eCAart/CAart(4+e 7 xlAreaStacUe
Acti&eCAart/CAart(4+e 7 xl,#u-Anut
Acti&eCAart/CAart(4+e 7 xlRaarMarUers
Acti&eCAart/CAart(4+e 7 xlC4linerC#lClustere
Acti&eCAart/CAart(4+e 7 xlC#neC#lClustere
Acti&eCAart/CAart(4+e 7 xlP4ramiC#lClustere
4i tu agregas al final del cdigo principal alguna lnea del tipo de grafico que te gusto, ese se activara,
por ejemplo$
4ub Macr#1')
Ran-e'6A2NB1<6)/Select
CAarts/A
Acti&eCAart/CAart(4+e 7 xlC#lumnClustere
Acti&eCAart/SetS#urce,ata S#urceN7SAeets'6!#Fa16)/Ran-e'6A2NB1<6)3 Pl#tB4N7 QxlC#lumns
Acti&eCAart/L#cati#n KAereN7xlL#cati#nAsO$Fect3 NameN76!#Fa16
Acti&eCAart/CAart(4+e 7 xlP4ramiC#lClustere/
.nd 4ub
.ste cdigo se puede programar en un botn o cualquier otro control de Visual Basic.
continuacin se muestra como se acomodan los datos LGnea ?N
Acti&eCAart/SetS#urce,ata S#urceN7SAeets'6!#Fa16)/Ran-e'6A2NB1<6)3 Pl#tB4N7 Q
xlR#Is
.n esta lnea se muestra la grafica por Ren-ln
Acti&eCAart/SetS#urce,ata S#urceN7SAeets'6!#Fa16)/Ran-e'6A2NB1<6)3 Pl#tB4N7 Q
xlC#lumns
.n esta lnea se muestra la grafica por C#lumna
.sta es la forma en que se muestran los datos de lo que habla la lGnea ?/
La lGnea 2 habla de que si la grafica queda en la misma hoja o simplemente toma una hoja para ella, por
ejemplo$
Acti&eCAart/L#cati#n KAereN7xlL#cati#nAsNeISAeet3 NameN76"raBic# 16
.sta lnea indica que la grafica tenga su propia hoja y que su nombre sea "raBic# 1/
.n este ejemplo ejecuto un cdigo con cada una de las caractersticas e#plicadas en las 2 lGneas/
Ran-e'6A2NB1<6)/Select
CAarts/A
Acti&eCAart/CAart(4+e 7 xlC#lumnClustere
Acti&eCAart/SetS#urce,ata S#urceN7SAeets'6!#Fa16)/Ran-e'6A2NB1<6)3 Pl#tB4N7 QxlC#lumns
Acti&eCAart/L#cati#n KAereN7xlL#cati#nAsO$Fect3 NameN76!#Fa16
Acti&eCAart/CAart(4+e 7 xlP4ramiC#lClustere
Acti&eCAart/SetS#urce,ata S#urceN7SAeets'6!#Fa16)/Ran-e'6A2NB1<6)3 Pl#tB4N7
xlC#lumns
Acti&eCAart/L#cati#n KAereN7xlL#cati#nAsNeISAeet3 NameN76"raBic# 16
=/ (i+# e "raBic#
?/ C#m# se ac#m#an l#s at#s
2/ C#m# se muestra la -raBica3 en este cas# en una s#la 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#/
!rivate 4ub ,ommand6utton-O,licP)*
Rem este ci-# -enera la "raBica en la A#Fa1
0ange)H<$6-AH*.4elect
,harts.dd
ctive,hart.,hart&ype I #l,olumn,lustered
ctive,hart.4et4ource2ata 4ource$I4heets)HBoja-H*.0ange)H<$6-AH*, !lot6y$I O
#l,olumns
ctive,hart.Location 8here$I#lLocations3bject, +ame$IHBoja-H
Rem a-re-a l#s iBerentes ti+#s e -raBica al List$#x1
List6o#-.ddCtem H#l,olumn,lusteredH
List6o#-.ddCtem H#l6ar,lusteredH
List6o#-.ddCtem H#lLine"arPersH
List6o#-.ddCtem H#l!ieH
List6o#-.ddCtem H#lVS4catterH
List6o#-.ddCtem H#lrea4tacPedH
List6o#-.ddCtem H#l2oughnutH
List6o#-.ddCtem H#l0adar"arPersH
List6o#-.ddCtem H#l,ylinder,ol,lusteredH
List6o#-.ddCtem H#l,one,ol,lusteredH
List6o#-.ddCtem H#l!yramid,ol,lusteredH
Rem a-re-a las iBerentes B#rmas e ac#m#ar l#s at#s al List$#x0
List6o#/.ddCtem H0englonH
List6o#/.ddCtem H,olumnaH
.nd 4ub
!rivate 4ub List6o#-O,licP)*
Rem este ci-# a el ti+# e -raBica al ar clic en el List$#x1
Cf List6o#- I H#l,olumn,lusteredH &hen ctive,hart.,hart&ype I #l,olumn,lustered
Cf List6o#- I H#l6ar,lusteredH &hen ctive,hart.,hart&ype I #l6ar,lustered
Cf List6o#- I H#lLine"arPersH &hen ctive,hart.,hart&ype I #lLine"arPers
Cf List6o#- I H#l!ieH &hen ctive,hart.,hart&ype I #l!ie
Cf List6o#- I H#lVS4catterH &hen ctive,hart.,hart&ype I #lVS4catter
Cf List6o#- I H#lrea4tacPedH &hen ctive,hart.,hart&ype I #lrea4tacPed
Cf List6o#- I H#l2oughnutH &hen ctive,hart.,hart&ype I #l2oughnut
Cf List6o#- I H#l0adar"arPersH &hen ctive,hart.,hart&ype I #l0adar"arPers
Cf List6o#- I H#l,ylinder,ol,lusteredH &hen ctive,hart.,hart&ype I #l,ylinder,ol,lustered
Cf List6o#- I H#l,one,ol,lusteredH &hen ctive,hart.,hart&ype I #l,one,ol,lustered
Cf List6o#- I H#l!yramid,ol,lusteredH &hen ctive,hart.,hart&ype I #l!yramid,ol,lustered
.nd 4ub
!rivate 4ub List6o#/O,licP)*
Cf List6o#/ I H0englonH &hen
ctive,hart.4et4ource2ata 4ource$I4heets)HBoja-H*.0ange)H<$6-AH*, !lot6y$I O
#l0o9s
.nd Cf
Cf List6o#/ I H,olumnaH &hen
ctive,hart.4et4ource2ata 4ource$I4heets)HBoja-H*.0ange)H<$6-AH*, !lot6y$I O
#l,olumns
.nd Cf
.nd 4ub
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 los arcAi&#s aleat#ri#s, pero ellos no
respetan la secuencia, por ejemplo los < nombres podran quedar en cualquier posicin del -AA en
adelante, del 1AA en adelante, del -A 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 secu%nciales, 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 alg:n
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.
Cremos a Visual Basic con Alt*F11 y Cnsertaremos 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.
!rivate 4ub ,ommand6utton-O,licP)*
0em se translada a la celda a?
0ange)Ha?H*.4elect
0em si no hay ning:n dato en a? que no archive de nuevo
Cf ctive,ell I .mpty &hen Do&o salte
0em abre un archivo en la unidad c con el nombre de datos.t#t
0em en forma de a'adir &emporal )3utput* en el rea de almacenamiento K-
3pen Hc$Qdatos.t#tH (or 3utput s -
0em activa una etiqueta para poder regresar
regresa$
0em escribe el dato de la celda activa en el archivo
8rite K-, ctive,ell
0em borra el dato de la celda
ctive,ell I .mpty
0em baja un rengln para el siguiente nombre
ctive,ell.3ffset)-, A*.4elect
0em si la celda esta vaca que no regrese ya
Cf ctive,ell I .mpty &hen Do&o salte
0em regresa a escribir el siguiente nombre en el archivo
Do&o regresa$
salte$
0em se acabo
0em cierra el archivo
,lose K-
.nd 4ub
Los datos quedaran archivados en la unidad y sern devueltos cuando presiones el botn consulta. Jue
a continuacin se muestra$
hora a programar el botn consulta
!rivate 4ub ,ommand6utton/O,licP)*
0em se translada a la celda a?
0ange)Ha?H*.4elect
0em abre un archivo en la unidad c con el nombre de datos.t#t
0em en forma de Leer )input* en el rea de almacenamiento K-
3pen Hc$Qdatos.t#tH (or Cnput s -
0em esto significa hazlo mientras no sea fin del archivo
0em esto quiere decir que no deje de leer los datos
0em hasta que no se llegue al ultimo de ellos
2o 8hile +ot .3()-*
0em lee un dato
Cnput K-, nombre
0em lo escribe en la celda
ctive,ell.(ormula0-,- I nombre
0em baja un rengln para el siguiente nombre
ctive,ell.3ffset)-, A*.4elect
0em activa el ciclo 2o 8hileLque regrese hasta
0em que se cumpla la condicin
Loop
0em cierra el archivo
,lose K-
.nd 4ub
Jue 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.
!rivate 4ub ,ommand6utton-O,licP)*
0em se traslada a la celda a?
0ange)Ha?H*.4elect
0em si no hay ning:n dato en a? que no archive de nuevo
Cf ctive,ell I .mpty &hen Do&o salte
0em abre un archivo en la unidad c con el nombre de datos.t#t
0em en forma de a'adir &emporal)output* en el rea de almacenamiento K-
3pen Hc$Qdatos.t#tH (or 3utput s -
0em activa una etiqueta para poder regresar
regresa$
0em captura el nombre en una variable
nombre I ctive,ell
0em borra el dato de la celda
ctive,ell I .mpty
0em se mueve una columna a la derecha
ctive,ell.3ffset)A, -*.4elect
0em captura la direccion en una variable
direccion I ctive,ell
0em borra el dato de la celda
ctive,ell I .mpty
0em se mueve una columna a la derecha
ctive,ell.3ffset)A, -*.4elect
0em captura el telefono en una variable
telefono I ctive,ell
0em borra el dato de la celda
ctive,ell I .mpty
0em escribe los datos nombre, direccion y telefono en el archivo
8rite K-, nombre, direccion, telefono
0em baja un rengln para el siguiente nombre
ctive,ell.3ffset)-, A*.4elect
0em retrocede dos columnas
ctive,ell.3ffset)A, L/*.4elect
0em si la celda esta vaca que no regrese ya
Cf ctive,ell I .mpty &hen Do&o salte
0em regresa a escribir el siguiente nombre en el archivo
Do&o regresa$
salte$
0em se acabo
0em cierra el archivo
,lose K-
.nd 4ub
!rivate 4ub ,ommand6utton/O,licP)*
0em se translada a la celda a?
0ange)Ha?H*.4elect
0em abre un archivo en la unidad c con el nombre de datos.t#t
0em en forma de Leer )input* en el rea de almacenamiento K-
3pen Hc$Qdatos.t#tH (or Cnput s -
0em esto significa hazlo mientras no sea fin del archivo
0em esto quiere decir que no deje de leer los datos
0em hasta que no se llegue al ultimo de ellos
2o 8hile +ot .3()-*
0em lee los datos
Cnput K-, nombre, direccion, telefono
0em escribe en la celda el nombre
ctive,ell.(ormula0-,- I nombre
0em se mueve una columna a la derecha
ctive,ell.3ffset)A, -*.4elect
0em escribe en la celda la direccion
ctive,ell.(ormula0-,- I direccion
0em se mueve una columna a la derecha
ctive,ell.3ffset)A, -*.4elect
0em escribe en la celda el telefono
ctive,ell.(ormula0-,- I telefono
0em baja un rengln para el siguiente nombre
ctive,ell.3ffset)-, A*.4elect
0em retrocede dos columnas
ctive,ell.3ffset)A, L/*.4elect
0em activa el ciclo 2o 8hileLque regrese hasta
0em que se cumpla la condicin
Loop
0em cierra el archivo
,lose K-
.nd 4ub
.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$
!rivate 4ub ,ommand6utton1O,licP)*
3pen Hc$Qdatos.t#tH (or Cnput s -
2o 8hile +ot .3()-*
Cnput K-, nombre, direccion, telefono
Cf nombre I &e#t6o#- &hen
&e#t6o#/ I direccion
&e#t6o#1 I telefono
.nd Cf
Loop
,lose K-
.nd 4ub
.ste ejemplo viene en el archivo Macr#s VI>=
4olo corra 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.
6ye y hasta la pr#ima
&3"23 2. L4 .+&0.D4 2.L
Pr#Bes#r Ramn Men#9a OcA#a
Mexic#

You might also like