0% encontró este documento útil (0 votos)
244 vistas

Vba Excel Userforms Luis Brito

Cargado por

Skr9143 Shiv
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
244 vistas

Vba Excel Userforms Luis Brito

Cargado por

Skr9143 Shiv
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 76

VBA Excel

UserForms

By

Luis E Brito

Copyright 2016
Copyright © 2016 by Luis E Brito
All rights reserved. This book or any portion thereof may not be reproduced or 
used in any manner whatsoever without the express written permission of the
 publisher except
except for
for the
the use of brief quotation
quotationss in a book review.
revie w.
Tabla de Contenidos
Otros
Otros Libros Pu
Publica
blicados
dos por Luis E Brito
Introducción
Capítulo 1 - UserForms
Capítulo 2 - Controles:
Controles: Cajas de Texto, Etiquetas y Botones de Comando
Capítulo 3 - Controles: Casilla de Verificación, Botón de Opción, Botón de
Alternar y Marcos
Capítulo 4 - Controles: Lista y Cuadr o Combinado
Capítulo 5 - Con
Controles:
troles: Barra de Desplazam
Desplazamient
iento,
o, Botón
 Botón de Número
Capítulo 6 - Control: Multi Páginas, Imagen y RefEdit
Capítulo 7 - Herramientas de Formato
Capítulo 8 - Eventos
Capítulo 9 - Interacción Entre
Entre Formularios, VBA y Hojas de Excel
Resumen
Acerca del
d el Au
Autor 
tor 
Otros Libros Publicados por Luis E Brito

Amazon US
https://www.amazon.com/dp/B01M8K5120
Amazon México
https://www.amazon.com.mx/dp/B01M8K5120
Amazon US
https://www.amazon.com/dp/B01M674D09
Amazon México
https://www.amazon.com.mx/dp/B01M674D09
Introducción
Los formularios (UserForms) y sus controles constituyen una de las
herramientas que proporciona VBA para el intercambio de información:
Entrada de datos y salida de resultados. Proporcionan la facilidad de diseñar y
crear formularios
formularios que son agradable a la vista,
vi sta, y que
que enfocan
enfocan la visión
vis ión del
usuario en los datos que son requeridos para la ejecución de los
 procedim
 procedi mientos.
ientos.
La mayoría
mayoría de los
l os usuarios no conocen esta utilidad,
utilidad, a pesar
pes ar de que son fácil
fáciles
es
de diseñar y que proporcionan una interfaz gráfica agradable que mejora la
experiencia del usuario a la hora de ingresar datos a la aplicación. Pueden ser 
utili
utilizados
zados como
como forma
forma de entrada
entrada para incorporar datos a una base de datos, o
simplement
simplementee para recoger datos que serán utili
utilizados
zados para reali
r ealizar
zar cálculos y
devolver resultados como si fuesen
fuesen una
una aplicac
ap licación
ión independiente.
independiente.
En este libro trataremos sobre los formularios, los controles, sus propiedades
y métodos, como diseñar y construir un formulario, como programar los
controles
controles,, asociándolos
asoci ándolos a eventos
eventos para
par a que ejecu
ejec uten los procedim
proced imient
ientos
os que se
requieran.
Finalmente les expreso, a pesar que el material es extenso, que existe una gran
cantidad de propiedades y métodos, que existe una gran cantidad de eventos,
 podemos
 podemos sacar provecho de los formularios
formularios (UserForms)
(UserForms) si nos enfocam
enfocamosos en
algunos
algunos elem
ele mentos que son
so n impor
important
tantes.
es. A medi
medida
da que
q ue vayamos
vayamos avanzando
avanzando en
en
el aprendizaje de los elementos fundamentales podemos ir incorporando
nuevos elementos cuando sean requeridos. Una fuente de ayuda muy importante
es el examinador de objetos, se puede recurrir a él para verificar los objetos,
sus propiedades,
propied ades, métodos
métodos y la sintaxis.
sintaxis.
Sin más, solamente deseo que este libro sea de utilidad y cumpla con su
objetivo de ayudar al lector a comprender y a utilizar los formularios en VBA
Excel.
Capítulo 1 - UserForms

UserForms (Formas o Formularios)


Una forma o formulario (UserForm) es esencialmente una caja de dialogo
construida al gusto y necesidad del usuario, de allí su nombre en inglés: User:
usuario y Form. Forma o formulario. Pero en realidad esta definición se queda
corta. Recordemos las funciones InputBox y MsgBox, donde la entrada se
restringe a un solo elemento, un valor numérico, una cadena de texto, un rango,
una matriz. Pero una forma permite recoger múltiples valores, en las cajas de
texto,
texto, permite
permite selecci
se leccionar
onar elementos
elementos con listas
lis tas o cajas combinadas,
combinadas,
seleccionar opciones y muchas otras características. También permite
desplegar los resultados de un procedimiento.
procedimiento. Pueden
Pueden intercambiar
intercambiar valores
val ores
con las hojas de Excel o puede trabajar independientemente sin intercambiar 
valores con las hojas.
En VBA
VBA un
un User
UserForm
Form es un objeto,
obje to, con propie
pr opiedade
dadess y métodos, que
q ue contiene
otros objetos como cajas de texto, etiquetas, botones, imágenes, etc.
Como todo objeto dentro del modelo sigue las mismas reglas. El operador 
 punto
 punto se utiliza
utiliza para separar
separ ar el objeto
obj eto de sus
sus propiedades
propi edades y métodos.
métodos.
UserFormName.Propiedad
UserFormName.Metodo
Las propiedades
pr opiedades incluyen
incluyen aquell
aquellas
as que se utili
utilizan
zan para dar formato
formato a las
l as
características
caracterí sticas del formu
formulario.
lari o. Estas propiedades
propi edades se pueden cambiar
cambiar mediante
código en VBA,
VBA, o se pueden cambiar
cambiar en la ventana
ventana de propiedades,
propie dades, si
s i esta
e sta
ventana no está visible puede hacerse visible con la tecla F4, o en la barra de
menú, en la pestaña ver, hacer clic en Ventana de propiedades.
Algun
Algunas
as de las propiedades
propie dades que se pueden cambiar
cambiar son:
Name
Para cambiar el nombre de la forma. De forma predeterminada VBA asigna a
las formas el nombre genérico UserForm y un número consecutivo. Así la
 primera forma
forma que creemos
creemos tendrá
tendrá nombre
nombre UserForm1,
UserForm1, y la segunda
segunda
UserForm2, y así sucesivamente. Sin embargo, se puede cambiar este nombre
 por otro nombre
nombre que resulte másmás descriptivo
descr iptivo y que
que tenga
tenga signif
significado
icado para
par a el
 programador.
 programador. Con
Con la finalidad
finalidad de ident
id entificar
ificar los
lo s diferentes
diferentes objetos se
recomienda colocar un prefijo, y luego el nombre que se desee. Esto no es
obligatorio, pero si recomendable. Por ejemplo, para las formas se utiliza el
 prefijo es frm,
frm, así que podríamos dar un un nom
nombre
bre a la forma frm
frmEm
Empleados
pleados,, si
estamos trabajando en una forma para recoger datos de los empleados.
BackColor
Para establecer
estable cer el color del fondo de la forma. Se puede
puede cambiar en la ventana
ventana
de propiedades, y muestra una paleta de colores para la selección.
BorderStyle
Para cambiar el tipo de borde de la forma. Tiene dos valores:
fmBorderStyleNone (0) y fmBorderStyleSingle (1).
Caption
Para colocar una etiqueta en la barra de título de la forma. Por defecto muestra
el título UserForm y un número consecutivo igual al que tiene la propiedad
 Name.
 Name.
Font
Cambia
Cambia las
l as propiedade
pr opiedadess asociadas
aso ciadas a la
l a fuent
fuentee utilizada, nombre
nombre de
d e la fuent
fuente,
e,
tamaño,
tamaño, resaltado,
res altado, itálica,
itáli ca, etc.
ForeColor
Permite definir el color que mostrara la fuente.
Height
Para modificar el alto de la Forma. También se puede modificar el alto
arrastrando el borde inferior, donde aparece un cuadradito de color blanco,
cuando
cuando aparezca
apar ezca el cursor
c ursor como una
una doble flecha vertica
vertical.
l.
Width
Para modificar el ancho de la forma. También se puede modificar el ancho
arrastrando el borde lateral, donde aparece un cuadradito de color blanco,
cuando aparezca el cursor como una doble flecha horizontal.
Cada uno de los controles que se crean en la forma constituyen propiedades
del objeto UserFormName. Por ejemplo, si se crea una caja de texto, TextBox1
se con
co nvierte en
e n una
una propiedad.
Entre los métodos más importantes de los UserformName están Show y Hide.
UserFormName.Show muestra la forma
UserFormName.Hide oculta la forma.

Como se crea una Forma (UserForm)


Una Forma se crea en el editor de Visual Basic. En el menú insertar, que
 permite
 permite insertar módulos
módulos y procedim
procedi mientos, tam
también
bién tiene
tiene la opción de insertar 
UserForm. Si se tienen varios proyectos abiertos
abier tos (Libros) prim
pr imero
ero debe
deb e
seleccionarse el libro donde se desea insertar el UserForm. Luego en la barra
de menú hacer clic en Insertar y seleccionar UserForm.
Se creará una forma vacía con el nombre de UserForm1 en la barra de título, y
aparecerá
aparece rá el
e l cuadro de
d e herramient
herramientas
as con
c on los controles que pueden utilizarse
utilizarse en
en
la forma. También en el explorador de proyectos aparecerá una carpeta con el
nombre
nombre Formularios
Formularios y en la ventana
ventana de propiedades
propi edades aparecerán
aparecer án las
 propiedades
 propied ades de UserForm1.
UserForm1.

Un UserForm puede ser visualizado como un lienzo donde colocar los


controles
controles que nos
nos perm
p ermitirán
itirán la introducción
introducción de datos, la presentación de
información y resultados.
Caja de Herramientas y Controles
La caja de herramientas muestra, de forma predeterminada, 15 controles, que
 pueden ser colocadas
col ocadas dentro de las Formas
Formas y dimension
dimensionadas
adas al gusto
usto del
usuario. En la siguiente figura se muestra la caja de herramientas. Si se
requieren controles adicionales, se pueden añadir en la barra de menú del
VBE, hacer
hacer clic en herramien
herramientas
tas y seleccionar
selecci onar controles
controles adicionales.
adici onales.

Para colocar un control en la Forma simplemente seleccione el control


haciendo
haciendo clic
cli c sobre
sobr e él en el cuadro de herramientas.
herramientas. Lu
Luego se posiciona
posic iona el
cursor sobre la forma, se ancla en un punto haciendo clic, se mantiene
 presionado
 presi onado y se arrastra
arr astra para crear
cr ear un control.
control.
Los controles y sus funciones se muestran en las siguientes figuras:

El seleccionador de objetos o apuntador se utiliza para seleccionar objetos


que han
han sido colocados
col ocados dent
de ntro
ro de la forma
forma para su edición o para moverlo.
Las etiquetas (Labels) se utilizan para colocar etiquetas de texto que ayudan a
identificar los controles dentro de la forma, y también pueden ser utilizados
 para mostrar
mostrar valores
val ores de otros controles, como
como barras de desplazam
despla zamient
iento,
o,
 botones
 botones de número
número y en general de cualquier control
control que tenga
tenga un
un valor.
Las Cajas de Texto (TextBox) son cajas que se crean para introducir 
información y también para mostrar resultados. Como su nombre indica el tipo
de dato que reciben se interpreta como String.

Otras formas de introducir información incluyen seleccionar valores


 predefinidos de listas
lis tas (ListBox
(ListBox)) y de cuadros
cuadros combinados
combinados (ComboBox
(ComboBox)) o
mediante casillas
casill as de verificación
verificaci ón (Checklist).
(Checklist).

Otras formas de introducir información la constituyen los botones de opción y


los botones de alternar. Ambos tipos de botones tienen dos estados True o
False y permiten seleccionar
selecc ionar una
una opción
opci ón entre
entre varias
varia s opciones
opci ones disponibles.
Cuando existen opciones relacionadas, las cuales son excluyentes entre si se
utili
utiliza
za el control
control de marco,
marco, el
e l cual lim
l imita
ita la selección
selec ción a una
una sola
sol a opción
opci ón al
grupo que se encuentra dentro del marco.

Los botones de comandos permiten que se ejecuten procedimientos cuando se


hacen clic sobre ellos. Por lo general también se incluye un botón para
cancelar la
l a forma
forma y cerrarla.
cerr arla. La barra
bar ra de
d e tabulaciones permite
permite manejar
manejar un
conjunto de propiedades de un control. Y el control de páginas múltiples
 permite
 permite crear una
una forma
forma que contiene
contiene múltiples
múltiples págin
pá ginas.
as.

Una barra de desplazamiento permite cambiar el valor mediante el uso de un


deslizador
desli zador.. El valor podría asociarse
asoci arse a una
una caja
caj a de texto
texto (Text
(TextBox
Box),
), que
almacenará
almacenará el valor de la barra de desplazam
desp lazamient
iento,
o, o también
también puede ser 
asociada
asocia da a la propiedad
propieda d caption de una
una etiqueta (Label)
(Label).. El botón
b otón de número
número
actúa de manera
manera sims imilar
ilar que la barra
barr a de desplazam
de splazamiento,
iento, pero solo hace
cambios
cambios finos
finos al presionar
presi onar las flechas de increment
incremento.
o. El cont
c ontrol
rol de im
i magen
 permite
 permite colocar y dar formato
formato a una
una imagen
imagen para ser
se r utili
utilizada
zada dentro
dentro de la
forma.
Cada uno de los controles, una vez que son incluidos dentro de la forma,
constituye una propiedad de la UserFormName correspondiente. Los controles
a su vez tienen propiedades,
propie dades, las
l as cu
c uales pueden ser modificadas en la ventana
ventana
de propiedades o mediante instrucciones en un procedimiento en VBA. Ahora
estamos solamente presentando los controles que pueden utilizarse dentro de
las formas, en los capítulos siguientes ahondaremos en el uso de ellos,
revisando
revisando las principales
principales propiedades.

Convención Utilizada para el Nombre de los Controles


Cuando los controles son creados VBA les asigna un nombre genérico por 
defecto (propiedad Name). A las formas las identifica como UserForm1,
UserForm2,
ser Form2, y así sucesivamen
sucesi vamente.
te. Las caja
c ajass de
d e texto com
co mo Textbox
Textbox1,
1, Textbox
Textbox2, 2,
y así con los otros controles, el usuario
usuario puede cambiarl
cambiarleses el
e l nombre
nombre y utili
utilizar 
zar 
uno que sea más descriptivo y que tenga mayor sentido para el programador.
Sin embargo, para saber que un nombre se refiere a determinado tipo de
control existe la convención de añadir un prefijo al nombre. A continuación, se
muestran
uestran los prefijos recomendados,
recomendados, estos prefijos
pre fijos son solo unauna
recomendación,
recomendación, no son de uso obligatorio, pero per o ayudan
ayudan a trabajar con los
controles, sobre todo si existen muchos de ellos en la forma.
 Nombre
 Nombre en español: Control
Control (ing
( ingles)
les) : Prefijo
Forma o Formulario : UserForm : frm
Etiqueta:
Etiqueta: Label : lbl
Caja de texto: TextBox: txt
Cuadro combinado: ComboBox: cbo
Lista: ListBox: lst
Casilla
Casill a de verificación:
verificaci ón: CheckB
CheckBox:
ox: chk 
Botón de opción: Option button: opt
Botón de alter
a lternar:
nar: Toggle
oggle button:
button: tog
Marco: Frame: fra
Botón de comando: Command button: cmd
Barra de tabulaci
tabulaciones:T
ones:Tab
ab strip:
stri p: tab
Páginas múltiples: Multipage:mpa
Barra de desplazamientos: ScrollBar: scr 
Botón de número: Spin button: spn
Imagen: Image: img

 Programando los Formularios y sus Controles


Controles
Diseñar el formulario y crear los controles es la primera fase, para que el
formu
formulario
lari o y sus controles
controles ejecuten las acciones que se requieren de ellos,
el los,
deben ser program
pr ogramados.
ados. Para programar
programar un control
control se debe hacer doble
dobl e clic
cli c
sobre el control que se desea programar o hacer clic en el botón derecho del
ratón para que aparezca el menú contextual, y entonces seleccionar ver código.
Los códigos
códi gos asociados a los formularios
formularios se
s e crean
cre an en unos
unos módulos
módulos especia
e speciales,
les,
que crean un
unos contenedores
contenedores de códigos
códi gos asociados a eventos de los controles
controles
que se están programando. Por ejemplo, para el control botón de comando el
evento
evento más
más frecuente
frecuente es el de hacer Click
Clic k sobre el botón.
botón. Para el control
control caja
de texto, Lista o Caja Combinada el evento más frecuente es el Change. Se
crea un módulo
módulo por cada formulario,
formulario, todos los
lo s eventos asociados a los
controles se crearán en este módulo. Para más información sobre eventos ver 
el capítulo 8.

 Mostrando
 Mostrando y Ocultando los Formularios
Formularios (UserForms)
(Use rForms)
Una vez que los formularios han sido diseñados, construidos y programados
deben ser llamados para ser mostrados y utilizados
utilizados y posteriorm
posteri orment
entee ocult
oc ultados
ados
o cerrados.
cer rados. Esto se log
lo gra utilizando
tilizando los
lo s métodos
métodos Show (m( mostrar), Hide
(ocultar), Load (Cargar) y Unload
Unload (cerrar)
(cer rar)..
Mostrando el
e l Formul
Formulario
ario (Use
(Us e rForm
rForm))
Para mostrar un formulario, se necesita crear un procedimiento que utilice el
método Show del objeto UserFormName. La sintaxis de este método es:
UserFormNam
ser FormName.Show
e.Show [modal]
Esta simple
simple línea de código colocada
coloca da dentro de un procedimient
procedimiento
o permitirá
mostrar un formulario en pantalla. Este procedimiento debe ser incluido en un
módulo estándar de VBA y no en el módulo especial de código para
formularios (UserForms).
Sub MostrarForma ( )
UserForm1.Show
End Sub
Una vez que el formulario aparece en pantalla, se mantendrá visible hasta que
sea ocultado.
Modal
Modal o Modeless
Modele ss
El parám
pará metro modal
modal es opcional,
opc ional, y es de tipo Boolean, True,
True, 1, (vbModal) es
el valor
va lor predeterm
p redeterminado.
inado. False, 0, (vbModeless).
( vbModeless). Se puede utilizar
utilizar True
True o
False, 1 o 0, o las constantes vbModal o vbModeless.
Cuando el formulario está en modal vbModal, valor 1 o True, no se puede
ejecutar ninguna acción en la aplicación hasta que se ejecute el formulario y se
cierre.
Si el parámetro
parámetro modal está en vbModeles,
vbModeles, valor 0 o False,
Fal se, se pueden hacer 
manipulaci
anipulaciones
ones a las
la s celdas
cel das de la hoja. En el siguient
siguientee procedimien
pro cedimiento
to se
muestra la forma frmList y se utiliza modal igual a 0, lo que permite que se
 puedan hacer manipu
manipulacio
lacionnes a las celdas de la hoja.
Sub Botón1_Haga_clic_en()
frmList.Show 0
End Sub
Ocul
Oc ulta
tand
ndo
o e l Formul
Formulario
ario (Use
( UserF
rForm
orm))
Para ocultar un formulario se utiliza el método Hide del objeto
UserFormName. El formulario no es visible, pero permanece en memoria. La
sintaxis de este método es:
UserFormName.Hide
Por lo general esta instrucción es incluida dentro de un botón de comando
ubicado en el mismo formulario. Este procedimiento se activa por lo general
utilizando el evento Click del control botón de comando. Por lo general se
 puede utilizar
utilizar una
una etiqueta
etiqueta descriptiva
descri ptiva para iden
ide ntificar el botón, como
como
cancelar, cerrar o cualquier nombre
nombre asociado
a sociado con ocultar.
ocultar.

Cargando y Cerrando los Formularios (UserForms)


Cargando el Formulario (UserForm)
En algunas ocasiones, si el formulario es muy grande, y tarda mucho tiempo en
cargarse. El usuario
usuario tiene
tiene la opción de hacer una
una carga previa
previ a a memoria
memoria del
formulario, pero sin que esté se muestre en pantalla. Para hacer esto se utiliza
el método Load del objeto UserForm. La sintaxis es:
Load UserFormName
Para la
l a mayoría
mayoría de los
l os formu
formularios
lari os no es necesario utili
utilizar
zar el método Load,
Load,
sino simplemente utilizar el método Show.
Cerrando el Formulario (UserForm)
Cuando
Cuando el formulario
formulario no se necesita
ecesi ta puede cerrarse
cerrar se y elim
eli minarse de la
memoria.
emoria. Para hacer esto se utiliza el método Un
Unload, el cual cierra
cier ra el
el
formulario y lo elimina de la memoria. Cuando un formulario es cerrado con el
método Unload, los controles creados son reestablecidos a sus valores
originales predeterminados. En esta forma no es posible accesar los valores
que habían
habían sido definidos
definidos por el usuario.
usuario. La sint
si ntaxis
axis es:
Unload UserFormName
Capítulo 2 - Controles: Cajas de Texto, Et iquetas y
Botones de Comando
Las cajas
caj as de textos
textos (TextB
(TextBox)
ox) y los botones de comandos
comandos (Command
(Command Button
Buttons)
s)
son los controles más elementales que pueden ser incorporados en una Forma
unto
unto con las etiquetas, las cuales son útiles para identificar
identificar el cont
c ontenido
enido que
será ingresado en las cajas de texto. En su forma más simple, estos controles
se asemejan a la función InputBox en su funcionalidad de recoger un valor 
ingresado
ingresado por el usuario.

Cajas de Texto (TextBox, txt)


Las cajas
caj as de texto
texto son incorpora
incorporadas
das a la forma
forma haciendo clic sobre el icono
i cono
correspondien
corres pondiente
te en el cuadro de herramient
herramientas,
as, lu
l uego se posiciona
posic iona el cursor en
cualquier lugar de la forma y se hace clic para anclar un borde de la caja, se
mantiene
antiene presionado
presi onado el botón del ratón, se arrastra
arras tra el cursor
c ursor para crear una
una
caja del tamaño
tamaño requerido
re querido y se suelt
s uelta.
a. Esto creará
cre ará una caja de
d e texto,
texto, que tendrá
tendrá
el nombre
nombre textbox1.
textbox1.

La caja de texto muestra en las esquinas y en la parte central de cada lado unos
 pequeños cuadrados
cuadrados de color
c olor blanco,
bl anco, que
que son unas
unas agarrade
agarraderas
ras (handles) que
 permiten
 permiten redimensionar
redimensionar la caja.
caj a. Cuando
Cuando se coloca el cursor sobre
s obre las
agarraderas de las esquinas
esquinas aparecerá
apar ecerá una
una flecha en diagonal
diagonal de doble punta,
punta,
haciendo clic y manteniendo presionado el botón del ratón y moviéndola
 permitirá
 permitirá cambiar la altu
al tura
ra y anchu
anchurara de la caja
c aja en form
formaa simultánea.
simultánea. EnEn los
cuadros de los bordes inferior y superior aparecerá una doble flecha vertical,
haciendo clic y manteniendo presionado movemos y cambiará el alto de la
caja. Igu
Igual sucede
s ucede con los cuadros que están en los laterales izquierdo
izquierdo y
derecho, al moverlos cambiara el ancho de la caja. En cualquier parte del
 borde de la
l a caja aparecer
apa receráá una
una cruz de flechas de doble dirección,
direc ción, al hacer 
clic y mantener presionado, cuando presenta esta forma, permitirá moverá la
caja en cualquier dirección, al soltar el botón del ratón se anclará la caja en su
nueva posición.
En la ventana de propiedades se desplegarán las propiedades de la caja de
texto
texto recién
recié n creada. En esta ventana
ventana se mostrarán
mostrarán las
la s propiedades
pro piedades del cont
c ontrol
rol
que se haya seleccionado, si no se encuentra seleccionado ningún control,
mostrará las propiedades de la forma.

Las propiedades
pr opiedades de las
la s cajas
caj as de texto
texto que
que aparecen
apar ecen en la ventana
ventana de
 propiedades
 propied ades son 42, para esta versión
versi ón de Micros
Microsoft
oft Office
Office (2016). Entre
Entre estas
tenem
tenemosos la
l a propiedad
propi edad Name,
Name, para identificar
identificar al control creado,
cre ado, aquí se ha
utilizado la convención de utilizar el prefijo txt para formar el nombre del
control: txtA.
txtA.
Existe un grupo de propiedades para dar formato a la caja de texto como:
Backcolor, para el color de fondo de la caja de texto,
BackSty
BackStyle,
le, para
pa ra dar
da r estilo
es tilo al fondo.
fondo.
BorderColor:
BorderColor: para dar color a las lín
lí neas del borde de la caja de texto
texto..
BorderStyle: para dar estilo a las líneas del borde.
Font: para cambiar el formato de la fuente, incluye nombre de la fuente,
tamaño,
tamaño, resaltado,
res altado, itálica,
itáli ca, etc.
ForeColor: para cambiar el color del texto que se introducirá en la caja de
texto.
Height. Establecer la altura de la caja de texto, también se puede modificar 
moviendo las agarraderas que se encuent
encuentran
ran en los lados superior e inferior
inferior de
la caja
ca ja de texto.
texto.
Width: establecer el ancho de la caja de texto. Se puede cambiar utilizando las
agarraderas que se encuent
encuentran
ran en los bordes laterales.
laterale s.
Top: distancia del borde superior de la forma al borde superior de la caja de
texto.
Left: distancia del borde izquierdo de la forma al borde izquierdo de la caja
de texto.
texto.
Las propiedades
pr opiedades de los controles
controles pueden ser cambiados
cambiados en la ventana
ventana de
 propiedades
 propied ades o mediante
mediante código
código en un
un procedimient
procedimiento
o escrito
escri to en VBA.

 Etiquetas
 Etiquetas (Label,
(Labe l, lbl)
Las etiquetas también se incorporan de igual manera en la forma, haciendo clic
sobre el icono
i cono del control etiqueta en la caja
caj a de herramient
herramientas,
as, lu
l uego haciendo
haciendo
clic en un lugar de la hoja y manteniendo el botón del ratón presionado se
mueve para crear el control del tamaño deseado. Al liberar la etiqueta quedará
 posicionada
 posici onada en la forma.
forma.
Para manipular
manipular el tamaño
tamaño del control
control se procede
pr ocede de igual manera
manera que con las
cajas de texto, el control etiqueta genera una caja con las mismas 8
agarraderas ya descritas
desc ritas para
par a las cajas de texto.
texto. La manipu
manipulaci
lación
ón sigue
sigue el
mismo procedimiento
procedimiento descrito
descri to para las
l as cajas
c ajas de texto.
texto.
Las propiedades
pr opiedades que se muestran
muestran en la ventana
ventana de propiedades
propie dades son 27. Existe
Existe
una
una propiedad
propi edad Name,
Name, y existe la propiedad
pr opiedad Caption que
que se utili
utiliza
za para
introducir
introducir la
l a cadena
cade na de texto
texto que
que aparecerá
apar ecerá en la forma.
forma.
Las propiedades que mencionamos para dar formato al control de caja de texto
son utilizadas con este control también:
Backcolor, BackStyle, BorderColor, BorderStyle, Font, ForeColor, Height,
Width, Top, Left.

 Botón de Comando (Command


(Com mand button, cmd)
cm d)
Los botones de comando son controles que permiten iniciar la ejecución de un
 procedim
 procedi miento
iento en base a un
un evento
evento relacionado
relac ionado con el botón,
botón, por lo general
general el
evento
evento es hacer clic sobre el botón creado, sin embargo,
embargo, existen otros eventos
que pueden
pueden iniciar la ejecución
e jecución del procedimien
pr ocedimiento,
to, lo cual verem
ve remos
os más
adelante.
Inser
Insertar
tar un botón de com
c omando
ando sigu
si guee el
e l mismo procedi
pro cedim
miento que ya hemos
hemos
descrito, el cambio de alto y ancho también puede hacerse mediante la
manipulaci
anipulaciónón de las ag
a garraderas
arrad eras de la caja del con
co ntrol, o mediante
mediante cambios
cambios en
la ventana de propiedades.
Finalicemos
Finalicemos el diseño de lal a forma
forma in
i nicial
ici al creando
c reando un botón para ejecutar una
una
acción. Como podemos observar en la imagen se ha creado una forma muy
sencilla, con tres elementos: una caja de texto, a la cual le hemos asignado
nombre txtA, una etiqueta con el texto: Introduzca un valor y un botón de
comando con nombre cmdRun y texto Ejecutar.

Este simple formulario se asemeja en funcionalidad a la función InputBox de


VBA, que permite recoger un valor suministrado por el usuario.

 Programando el Botón de Comando


Luego de haber diseñado nuestra forma, en este caso hemos creado una caja de
texto, una etiqueta para dar un mensaje y un botón de comando para iniciar la
ejecución de un procedimiento que va a consistir en desplegar un mensaje de
texto (MsgBox).
Para introducir un código asociado al botón de comando que hemos creado,
 podemos
 podemos hacer doble clic
cl ic sobre
sobr e el control, o podemos
podemos seleccionar
sele ccionar el control y
hacer clic
cli c con el botón derecho
derecho del ratón para desplegar
desp legar el menú contex
contextu
tual.
al.
En el menú seleccionar ver código. Esto abrirá una ventana de código
especialmente para introducir los códigos asociados a los formularios.
Automáticamente se crea un contenedor de código, asociado al control, desde
el cual hemos
hemos abierto
abi erto la ventana
ventana de códig
códi go, y estará asociado
as ociado a un evento,
evento, el
nombre del procedimiento será igual al nombre del control, seguido por un
guion bajo y el nombre del evento. El evento por defecto será Click. Dentro
del contenedor escribimos el código para el procedimiento.
Private Sub cmdRun_Click()
Dim valor As String
valor = txtA.Text
MsgBox
MsgBox "El
"El valor
val or int
i ntroducido
roducido es " & valor 
End Sub
txtA es una propiedad del objeto UserForm1, y Text es una propiedad del
objeto txtA que regresa el valor del texto ingresado en la caja de texto.
La declara
de claración
ción valor = txtA
txtA.T
.Text
ext podría haber sido escrita
escri ta de las
l as siguient
siguientes
es
maneras:
Valor = UserForm1.txtA.Text o inclusive
Valor = Me.txtA.Text
Donde Me se utiliza en sustitución del objeto activo, en este caso UserForm1.
Luego probamos nuestro formulario con la tecla F5, o con el icono de ejecutar 
en la barra de menú del editor. Aparecerá la forma lista para ser utilizada.
Introducimos un valor en la caja de texto, por ejemplo 50 y al hacer clic en
 botón Ejecutar
Ejecutar aparecerá
apar ecerá una
una caja de mensaje
mensaje (Msg
( MsgBox
Box)) con el Text
Texto:
o:
El valor introducido es 50.
Ahora diseñaremos y construiremos otra forma con más elementos, para
introducir
introducir dos valores
valore s en dos cajas
caj as de texto
texto y obtener
obtener el valor
val or de la sum
s umaa en
una tercera caja de texto. Utilizaremos dos botones de comando, uno para
realizar la suma y otra para borrar el resultado.

El código del botón de comando para sumar es:


Private Sub cmdSumar_Click()
Dim A As Single
Dim B As Single
Dim C As Single
A = txtval1.Value
B = txtVal2.Value
C=A+B
txtResultado.Value = C
End Sub
El código para el botón de comando borrar es:
Private Sub cmdBorrar
cmdBorrar_Click()
_Click()
txtval1.Text = " "
txtVal2.Text = " "
txtResultado
txtResultado = " "
End Sub
Capítul
Capítuloo 3 - Controles:
Controles: Casill
Casi lla
a de Verific
Verificación,
ación, Botón
de Opción, Botón de Alternar y Marcos
Los controles de casilla
casil la de verificación,
verificac ión, botón de opción
opci ón y botón de altern
al ternar 
ar 
son parecidos,
parecid os, en el hecho
hecho de que proporcion
proporcio nan una
una respuesta con dos
 posibles
 posibl es resu
res ultados, True
True o False, seleccionado
selecc ionado o no
no seleccionado.
selecc ionado.

Casilla de Verificación (Checkbox, chk)


La casilla de verificación permite seleccionar una opción al hacer clic sobre
ella (verificar o checar) y si existen varias casillas de verificación se pueden
seleccionar
selec cionar cualquier número
número de ellas,
ellas , o todas ellas,
ellas , no son excluy
excluyent
entes
es ent
e ntre
re
sí. La casilla de verificación tiene dos estados posibles, seleccionado, cuando
tiene
tiene la
l a marca de verificado,
ve rificado, con valor True y nono seleccionado,
sel eccionado, cuando
cuando el
cuadro está vacío, False. Se puede utilizar
utilizar un marco para
pa ra agrupar varias
varia s
casillas de verificación, para manejarlas en grupo, pero esto no modifica la
independencia de seleccionar las casillas.
La forma de utilizar este control es similar a la descrita para los otros
controles. Este control tiene su propia etiqueta, a través de la propiedad
caption, así que no es necesario
necesar io utilizar etiquetas de textos
textos para
par a su
identificación.
En el sigu
s iguient
ientee ejem
eje mplo se
s e diseñó
dis eñó una
una forma
forma con varias
varia s casillas
casi llas de
verificación
verificac ión para seleccionar
sel eccionar los ingredie
ingredien
ntes a utili
utilizar
zar en un
un sandwic
sandwich.
h.
El diseño de la forma y sus controles es el que muestra a continuación:

Luego de diseñar la forma se programa el botón de comando para ejecutar un


 procedim
 procedi miento.
iento. En este procedimiento
procedimiento utilizam
utilizamos
os una
una serie
seri e de estructuras
estructuras
condicionales para ir evaluando si la casilla de verificación está en posición
Verdadera
erdader a (True)
(True) o Falsa (False).
(False) .
Private Sub
Sub cmdSelecci
cmdSeleccion_C
on_Click()
lick()
Dim Texto As String
Dim Texto1 As String
Dim Texto2 As String
Dim Texto3 As String
Dim Texto4 As String
Dim sep As String
sep = ", "
If chkingredient1 Then
Texto1 = chkingredient1.Caption
Texto = Texto1 + sep
Else
Texto = Texto
End If 
If chkingrediente2 Then
Texto2 = chkingrediente2.Caption
Texto = Texto + Texto2 + sep
Else
Texto = Texto
End If 
If chkingrediente3 Then
Texto3 = chkingrediente3.Caption
Texto = Texto + Texto3 + sep
Else
Texto = Texto
End If 
If chkingrediente4 Then
Texto4 = chkingrediente4.Caption
Texto = Texto + Texto4
Else
Texto = Texto
End If 
MsgBox Texto
End Sub
Al seleccionar por ejemplo Tomate, Jamón y Tocineta y hacer clic en el botón
seleccionar mostrará un mensaje de Texto con los nombres de los ingredientes
selecci
sel eccionados:
onados: Tomate,
omate, Jamón
J amón,, Toci
Tocineta.
neta.

 Botón de Opción (Option Button,


Button, opt)
Con los botones de opción la situación es diferente a la de las casillas de
verificación, porque si se selecciona una opción las otras opciones no pueden
seleccionarse, es decir son mutuamente excluyentes, por ejemplo, si preguntan
 por el estado
es tado civil, solo
s olo puede ser uno
uno en un
un mom
moment
ento
o determinado:
determinado: soltero,
casado, viudo. Si se tienen varios grupos de opciones, ellas pueden ser 
diferenciadas, agrupándolas
agrupándolas en diferentes
diferentes marcos,
marcos, o utili
utilizan
zando
do la
l a propiedad
prop iedad
GroupName.
Los botones de opción
opc ión tienen
tienen dos valores:
val ores: seleccionado,
selecc ionado, True,
True, aparece un
 punto
 punto negro
negro en el centro del botón y no seleccionado, False, aparece
apare ce un circu
circ ulo
en blanco. Cuando
Cuando uno
uno presiona uno
uno de los botones,
botones, se selecciona
selecc iona esa opción y
deselecciona
desele cciona la opción que estaba previam
previ ament
entee selecci
se leccionada,
onada, nun
nunca
ca dos
opciones estarán seleccionadas simultáneamente.
Este control, al igual que el de casilla de verificación tiene su propia etiqueta
de texto, a través de la propiedad caption
El sigu
si guient
ientee códig
códi go perm
per mite extraer la inform
información
ación sobre el estado civil,
civi l,
mediante el uso de una estructura condicional.
Private Sub cmdCivil
cmdCivil_Click()
_Click()
If optSoltero Then
Status = "Soltero"
ElseIf optCasado Then
Status = "Casado"
Else
Status = "Viudo"
End If 
MsgBox "El estado Civil es " & Status
End Sub
 Marco (Frame,
(Fram e, fra)
El control
control Marco se utiliza para crear
cr ear una caja y agrupar
agrupar otros controles
controles
dentro del mismo. Esto con la finalidad de agrupar controles que están
relacionados,
relac ionados, y así mejorar el diseño
di seño y present
pres entación
ación del formu
formulario.
lari o. Tam
También
bién
se utiliza para
par a agrupar diferentes conjunt
conjuntos
os de
d e botones de opción, para limitar 
la exclusión de las opciones dentro de cada marco.
Para incluir controles dentro del marco, se recom
r ecomienda
ienda primero crear el
marco, luego
luego crear
cre ar los
l os controles dent
de ntro
ro del
de l marco. Al hacerlo de esta manera
manera
el marco y los controles dentro de él se comportarán como una sola entidad.
Si los controles que se desean incorporar al marco ya han sido creados
 previos a la creación
cr eación del marco,
marco, se recom
r ecomienda
ienda mover
mover los controles
controles sobre el
marco, y no el marco sobre los controles. Esto se debe al orden de los
elementos gráficos, al sobreponer el marco sobre los controles, estos quedarán
cubiertos por el marco. Al presentar la forma,
forma, los controles
controles dentro
dentro del marco
 permanecerán
 permanecerán ocultos.
ocultos.
El Marco tiene las propiedade
pr opiedadess comun
comunes a todos los controles
controles::
 Name,
 Name, para dar nombre
ombre al cont
c ontrol,
rol, se recom
r ecomienda
ienda utilizar
utilizar el prefijo
pre fijo fra,
seguido de un nombre.
Caption, para colocar un título al marco.
Además de las propiedades para establecer el formato del control.

En la figura se muestra una forma con dos grupos de opciones, cada grupo está
incluido dentro
dentro de su propio marco, de esta manera
manera la exclusión
exclusión de las
l as
diferentes opciones queda contenida, y no se afectan entre sí. De esta manera
es posible seleccionar una opción en el marco de la izquierda y seleccionar 
una
una opción
opci ón en el marco
marco de la
l a derecha.
der echa.

 Botón de Alternar (Toggle


(Toggle Button,
Button, tog)
Un botón
botón de alternar permite
permite hacer clic
cli c sobre
sobr e él, permitiendo
permitiendo dos valores:
valo res:
 presionado,
 presi onado, verdadero (True)
(True) y no
no presionado,
presi onado, Falso
Falso (False)
( False).. Pero a
diferencia de los
l os botones de opción, permiten
permiten ejecutar
ejecutar dos tipos de acción,
a cción,
dependiendo si el botón está presionado
presi onado o no.
En su funcionalidad es como una mezcla de botón de comando y botón de
opción. Parecido a un botón de comando, porque se ejecuta cuando se hace
clic sobre él, y parecido a un botón de opción porque tiene dos estados:
 presionado
 presi onado (True)
(True) y no presionado (False). Aunque
Aunque existe
existe la posibili
posi bilidad
dad de un
tercer estado:
es tado: Null,
Null, cuan
c uando
do la propiedad
propied ad TripleState es establecida
estableci da como True,
True,
la cual por defecto está establecida como False.
En el sigu
s iguient
ientee formulario
formulario se crea un botón
botón de alternar para realizar
r ealizar la
l a acción
acci ón
de cambiar el color de fondo de verde a azul.

Al estar presionado el color del fondo es de color verde y al no estar 


 presionado
 presi onado el color será
ser á azul.
azul. El código del procedim
proc edimient
iento
o es el que se
muestra a continuaci
continuación.
ón.
Private
Priv ate Sub Togg
ToggleButton
leButton1_Cli
1_Click()
ck()
If ToggleButton1.Value Then
frmT
frmTestAlternar.BackColor = vbGreen
vb Green
Else
frmTestAlternar.BackColor = vbBlue
End If 
End Sub
Capítulo 4 - Controles: Lista y Cuadro Combinado
Los con
co ntroles de lista
li sta y de cuadro combinado
combinado son sim
si milares
ilar es en el sentido
sentido de
que muestran un listado de opciones para que el usuario haga una selección.

 Lista (ListBox, lst)


Una Lista es un control, que genera una caja con un listado de elementos
(Items),
(Items), de los cu
c uales se puede seleccionar
sel eccionar uno
uno o varios
var ios elementos,
elementos,
dependiendo del valor de la propiedad Muliselect, la cual tiene 3 valores
 posibles:
 posibl es:
fmMultiSelectSingle para seleccionar un solo elemento de la lista
fmMultiSelectMulti para seleccionar varios elementos simultáneamente al
hacer clic sobre cada elemento o presionando la barra espaciadora.
fmMultiSelectExtended para seleccionar varios elementos utilizando la
combinación:
Shift + click en cada elemento. Shift (Tecla de mayúscula)
Shift (mantenida en el primer elemento) + clic en el último elemento
seleccionado.
Shift (mantenida en el primer elemento) + tecla de dirección para avanzar 
elem
ele mento por elem
ele mento.
Marcando
Marcando y arrastrando el ratón
r atón sobre los item
i temss a selecci
s eleccionar
onar..
Se pueden seleccionar o deseleccionar haciendo ctrl + clic sobre los
elementos
elementos individuales.
Los con
co ntroles lista tienen la propiedad
prop iedad Name,
Name, pero
per o no tienen
tienen propiedad
caption, por lo que se puede utili
utilizar
zar un control
control etiqueta
etiqueta para la identificación
identificación
del control. También tiene las propiedades generales de formato comunes a
todos los controles.
Tienen una
una propiedad RowSource, que permite
permite crear
crea r la
l a lista
li sta de elem
e lement
entos
os del
de l
control, ligándolo a un rango o a un nombre de rango de una hoja de Excel.
Si la lista de elementos
elementos ocupa más
más espacio
es pacio qu
q ue la caja creada, se incluirá una
una
 barra de desplazamiento
desplazamiento vertical colocada
c olocada en
e n el lateral derecho, para moverse
moverse
a lo largo de la lista.

Cuadro Combinado (ComboBox, cbo)


Un control de cuadro combinado es una combinación de caja de texto y lista.
Cuando se inserta un cuadro combinado se crea una caja de texto, que en su
lado derecho tiene un un botón con flecha
flecha hacia abajo,
abaj o, que al presionarlo
presi onarlo
mostrara una
una lista
li sta desplegable
despl egable (drop
(dr op down
dow n menu
menu).). A diferencia de las
l as listas,
l istas,
que tienen la posibilidad de seleccionar uno o múltiples valores de la lista, un
cuadro combinado
combinado solo permpe rmite
ite la selección
selec ción de un solo valor.
v alor.

Tiene propiedad
propi edad Name
Name para
par a cambiar el nombre
ombre del
d el cont
c ontrol,
rol, pero no tiene
 propiedad
 propied ad Caption para colocar
col ocar una
una etiqueta
etiqueta de identificació
identificación n, por lo que se
necesita un control
control etiqueta
etiqueta (label)
(la bel) para colocar una
una ident
id entificación
ificación al control.
control.
Las propiedades
pr opiedades generale
generaless para
par a dar formato
formato también
también aplican
apli can a este control,
tales como:
Backcolor, BackStyle, BorderColor, BorderStyle, Font, ForeColor, Height,
Width, Top, Left.
Al igual que el control lista, tienen una propiedad RowSource, que permite
crear la lista de elementos del control, ligándolo a un rango o a un nombre de
rango de una hoja de Excel.

Formas de Poblar una Lista o Cuadro Combinado


Utilizando el método AddItem
Una lista o un cuadro combinado pueden ser cargados utilizando el método
AddItem, en un evento de inicialización del formulario. Utilizando la siguiente
sintaxis:
ObjetoListBox.AddItem
ObjetoListBox.AddItem ([pvar
([ pvargI
gItem
tem,, [pvargIn
[pva rgIndex])
dex])
ObjetoComboBox.AddItem
ObjetoComboBox.AddItem([
([pvar
pvargI
gItem
tem,, [pvargIn
[pva rgIndex])
dex])
Donde
Donde pvarg
pvar gItem
Item es opcional
opci onal y es el elem
el ement
ento
o o fila que se va a añadir a la
lista o cuadro combinado y,
 pvargIndex
 pvargIndex es opcional y es un un número
número entero,
entero, que representa la posición
posici ón del
elemento o fila dentro del objeto. Si se omite el Index, el Item o fila es
ubicado al final
final de la lista.
l ista. Index
Index comienz
comienzaa con cero, así que el prim
pr imer 
er 
elemento de la lista tiene index 0. El valor de index no puede ser mayor que el
número
número total
total de filas,
filas , el cual se establece
e stablece con la propiedad
pr opiedad ListCount
istCount..
AddItem no funciona si el ListBox o ComboBox están ligados a datos
mediante la propiedad
pr opiedad RowSource, así que, si desean
des ean agregar
agregar elem
e lement
entos
os
utili
utilizan
zando
do el método AddItem
AddItem,, prim
pri mero debe
de be borrarse
borr arse el valor
va lor de
d e la propiedad
propieda d
RowSource.
A continuación, un ejemplo de un procedimiento de un evento de inicialización
del formulario,
formulario, qu
q ue carga
c arga los elementos
elementos de la lista utili
utilizan
zando
do el método
AddItem.
Private Sub UserForm_Initialize()
Me.lstTest.AddItem "Peter"
Me.lstTest.AddItem "John"
Me.lstTest.AddItem "Richard"
Me.lstTest.AddItem "Luis"
Me.lstTest.AddItem "Jorge"
End Sub
Aquí
Aquí Me se refiere al objeto UserForm activo.
A continuación, se muestra como aparece el control lista luego de la
inicialización.
Se observa que en la caja de lista solo se pueden visualizar 3 elementos, por 
lo que aparece una barra de desplazamiento vertical para acceder a los
elementos no visibles dentro de la caja de la lista.
Para un control de caja combinado (ComboBox) procedemos de manera
similar con el método AddItem. Me, se refiere al objeto UserForm Activo,
donde se encuentra
encuentra el control
control cuadro combinado
combinado y cbopaises es el nombre
nombre del
objeto
obj eto ComboBox.
ComboBox.
En lugar de Me podríamos haber utilizado frmTESTCBO.
frmTESTCBO.cbopaises.AddItem "País" es equivalente a
Me.cbopaises.AddItem
Me.cbopaises.AddItem "País".
"Paí s".
Private Sub UserForm_Initialize()
Me.cbopaises
Me.cbopai ses.AddItem
.AddItem "Venezu
"Venezuela
ela""
Me.cbopaises.AddItem "México"
Me.cbopaises.AddItem "Colombia"
Me.cbopaises.AddItem
Me.cbopaises.AddItem "Brasil"
"Brasil "
Me.cbopaises.AddItem "Peru"
Me.cbopaises.AddItem "Chile"
Me.cbopaises.AddItem "Ecuador"
End Sub
Aparece una
una caja
caj a de texto,
texto, el cual al presionar
pr esionar el botón con flecha
flecha en el borde
derecho despliega un menú, con los elementos añadidos con el método
AddItem.
Utilizando la Propiedad RowSource
La propiedad RowSource permite cargar de elementos un control de lista o un
control de caja combinada. RowSource ingresa una referencia a un rango de
celdas dentro
dentro de una
una hoja, el cual es un rang
rango vertical de celdas
cel das para
par a una
una lista
li sta
de una sola columna, o un bloque de celdas para una lista de múltiples
columnas. En la siguiente figura se muestra el rango A3:A8, de la hoja datos.
La sintaxis es el nombre de la hoja seguido de un signo de admiración y luego
el rango de las celdas. Si el nombre de la hoja contiene espacios vacíos o
caracteres especiales, debe colocarse el nombre dentro de comillas simples.
Por ejemplo si el nombre de la hoja es datos de listas, la referencia debe
colocarse: 'datos de listas'!A3:A8
La referencia del rango puede ser colocado directamente en la ventana de
 propiedades,
 propied ades, donde aparece la propiedad
propieda d RowSource. En la figura
figura se muestra
muestra
una porción de la ventana de propiedades del objeto tipo ListBox de nombre
lstGolosinas, con la propiedad RowSource y la referencia del rango.

Al colocar
col ocar la referencia en la ventana
ventana de propiedades
pr opiedades autom
automáticam
áticament
entee
aparecerán los elementos dentro de la caja de la lista.
Para el control de caja combinada (ComboBox) funciona de igual manera. En
la ventana de propiedades del control ComboBox se ubica la propiedad
RowSource y se coloca la direcci
di rección
ón del rango
rango siguiendo
siguiendo la sint
s intaxis
axis ya
indicada. Nombre de la hoja seguido del signo de admiración (!) y luego el
rango.
En lugar de utilizar la ventana de propiedades también se puede utilizar en un
 procedim
 procedi miento
iento con el evento
evento de inicia
inicialización
lización al cargar el formu
formulario.
lari o.
Private Sub UserForm_Initialize()
Me.cbodatos.RowSource = "datos!A3:A8"
End Sub
La referen
re ferencia
cia al rang
r ango
o debe colocarse
colocar se en
e ntre comill
comillas
as dobles
dobl es y sigu
si guee la
l a misma
misma
sintaxis. Nombre de la hoja seguido de signo de admiración (!) y luego el
rango. También se puede utilizar el signo igual dentro de las comillas:
Private Sub UserForm_Initialize()
Me.cbodatos.RowSource = "=datos!A3:A8"
End Sub
Aquí,
Aquí, se
s e aplica
apl ica la propiedad
propied ad RowSource al objeto ComboBox
ComboBox.. Me, sustitu
sustituye
ye
al objeto UserForm
UserForm activo.
Utilizando la Propiedad RowSource con un Nombre de Rango
En lugar de utilizar una referencia a un rango, también se puede utilizar un
nombre de rango. Este nombre de rango puede utilizarse en la ventana de
 propiedades
 propied ades del cont
c ontrol
rol lista
li sta (ListBox
(ListBox)) o caja com
c ombinada
binada (ComboBox
(ComboBox).
).

El nombre
nombre del
d el rang
r ango
o se escribe
escri be sin
si n colocar comill
comillas.
as. Tam
También
bién se puede
utilizar el nombre de rango en un código de inicialización de la UserForm.
Private Sub UserForm_Initialize()
Me.lstFrutas.RowSource = "Frutas"
End Sub
En este caso el nombre del rango debe colocarse entre comillas dobles.
Nombres de Rangos Dinamicos
Si la lista va a cambiar es necesario modificar el rango asociado al nombre.
Una forma de hacerlo es creando un código que se ejecute con el evento de
inicialización
iniciali zación del UserForm.
Private Sub UserForm_Initialize()
Dim UFila As Double
Worksheets("datos").Select
UFila
Fil a = Range("A"
Range("A" & Rows.Coun
Row s.Count).End(xlU
t).End(xlUp).Row
p).Row
ThisWorkbook.Names.Add "mirango", Range(Range("A3"), Range("A" &
UFila))
Me.lstFrutas.RowSource = "mirango"
End Sub
En este procedim
procedi miento
iento de inicialización,
i nicialización, se verifica
ver ifica la
l a última fila
fila con
inform
información
ación y se alm
al macena este valor
val or en la variable
variab le UFila. Luego
Luego se aplica
apl ica la
 propiedad
 propied ad Names
Names al objeto
obj eto Workbook
Workbook (ThisWorkbook
(ThisWorkbook), ), para crear
cr ear un objeto
 Names,
 Names, el cual es una
una colección
colecc ión de objetos tipo Name.
Name. Se aplica
aplic a el método
método
Add para añadir
añ adir un nombre
nombre al rango
rango actualizado
actualizado entre la celda
ce lda de inicio A3,
hasta la última fila con información en la columna A, "A"&UFila. Finalmente
se aplica la propiedad RowSource y se le asigna el nombre de rango
actualizado.
Utilizando la propiedad RowSource con Tablas
En lugar de crear un nombre de rango, se puede crear una tabla, primero hay
que marcar
marcar el rango
rango de celdas que van a constitu
constituir
ir la lista de
d e elem
el ement
entos
os a
incluir con la propiedad RowSource, en el menú insertar, grupo Tablas, se
encuent
encuentra
ra el icono Tabla,
Tabla, al
a l hacer clic
cl ic se
s e activara el "Asisten
"Asis tente"
te" para crear
cr ear una
una
tabla. Seguir las indicaciones para crear la tabla. Esto creará una tabla con el
nombre Tabla1. Cambiar el nombre. Este nombre se añade a el administrador 
de nombres de rango, como si fuese un nombre de rango. La ventaja que tiene
la tabla, es que se actualiza dinámicamente, así que cada vez que se incluya o
se borre
bor re una
una línea,
lí nea, el rango
rango se actuali
actualizara.
zara.
Este nom
nombre
bre de tabla que creamos se puede utilizar en la propiedad
propie dad
RowSource en un procedimiento de inicialización del objeto UserForm.
Private Sub UserForm_Initialize()
Me.lstTabl
Me.lstTablaF
aF.RowSo
.RowSource
urce = "Tabl
"TablaF"
aF"
End Sub
Me sustituye al UserForm, y lstTablaF es el nombre dado al objeto ListBox,
RowSource es la propiedad aplicada a el objeto ListBox. El nombre de la
tabla se coloca entre comillas dobles: "TablaF". Al inicializar el UserForm, se
cargan los elementos que estén en la tabla creada.
 No fun
funciona
ciona el nombre
nombre de la tabla en
e n la ventan
ventanaa de propiedades.
propi edades. Pero se
 puede utilizar
utilizar sin problema en un procedimiento
procedimiento de inicialización,
inicial ización, con el
código mostrado.
Utilizando la Propiedad List y el método AddItem, Añadiendo Elemento
por Elemento
La propiedad List permite agregar elementos a una lista cuando se tienen
múltiples columnas
columnas de datos. La sintax
sintaxis
is de esta propieda
p ropiedad
d es:
Objeto ListBox.List(
istBox.List([pva
[pvargIn
rgIndex],
dex], [pvargColum
[pva rgColumn])
n])
Objeto ComboBox.L
ComboBox.List(
ist([pva
[pvargIn
rgIndex],
dex], [pvargColum
[pva rgColumn])
n])
El primer parámetro es el índice de las filas, el segundo parámetro es el
índice de las columnas.
columnas. Ambos
Ambos in
i nician
icia n en 0 (cero).

Para añadir elementos a una lista podemos utilizar un procedimiento para un


evento de inicialización y cargar los elementos uno por uno. El primer 
elemento
elemento de las
la s filas,
filas , es decir, los elementos
elementos ubicados en la primera columna
columna
se deben añadir con el método AddItem, y los restantes con la propiedad List.
Private Sub UserForm_Initialize()
Me.lstLista1.ColumnCount = 3
Me.lstLista1.AddItem "Dia 1"
Me.lstLista1.List(0, 1) = "Lunes"
Me.lstLista1.List(0, 2) = "Espaguetis"
Me.lstLista1.AddItem "Dia 2"
Me.lstLista1.List(1, 1) = "Martes"
Me.lstLista1.List(1, 2) = "Arroz"
Me.lstLista1.AddItem "Dia 3"
Me.lstLista1.L
Me.lstLista1.List(2,
ist(2, 1) = "Miércoles"
"Miércoles "
Me.lstLista1.List(2, 2) = "Ensalada"
End Sub

Utilizando la Propiedad Column y el método AddItem, Añadiendo


Elemento por Elemento
La propiedad Colum permite añadir elementos cuando la lista tiene múltiples
columnas. La sintaxis es:
ObjetoListBox.Column([pvar
ObjetoListBox.Column([pvargC
gColum
olumn],
n], [pvargIn
[pva rgIndex])
dex])
ObjetoComboBox.Colum
ObjetoComboBox.Column([pvar
n([pvargColum
gColumn],
n], [pvargIn
[pva rgIndex])
dex])
El primer parámetro es el índice de las Columnas y el Segundo parámetro es
el índice de las filas, ambos inician en 0 (cero).

Esta propiedad se parece a la propiedad List, pero tiene los índices


transpuestos.
transpuestos. El primer índice es de la colu
col umna y el seg
se gundo
undo es el de la Fila.
Fil a.
En el sigu
si guient
ientee procedimien
pr ocedimiento
to de inicialización
i nicialización se cargarán los elementos
elementos de
una caja combinada (ComboBox) utilizando la propiedad Column. Los
elementos de la primera columna deben cargarse utilizando el método
AddItem.
Private Sub UserForm_Initialize()
Me.cboCol.ColumnCount = 3
Me.cboCol.ColumnHeads = False
Me.cboCol.AddItem
Me.cboCol .AddItem "Matem
"Matematica
atica""
Me.cboCol.AddItem "Fisica"
Me.cboCol.AddItem
Me.cboCol .AddItem "Quimica"
"Quimica"
Me.cboCol.Column(1, 0) = "Matias"
Me.cboCol.Column(1, 1) = "Francisco"
Me.cboCol.Column(1, 2) = "Maria"
Me.cboCol.Column(2, 0) = "Mañana"
Me.cboCol.Column(2, 1) = "Tarde"
Me.cboCol.Column(2, 2) = "Noche"
End Sub
Utilizando la Función Array en Combinación con la Propiedad List
Se pueden cargar las listas (ListBox) y las cajas combinadas (ComboBox)
utilizando la función Array en combinación con la propiedad List. La sintaxis
es la siguiente:
ObjetoListBox.Lis
ObjetoListBox.Listt = Array(ele
Arr ay(elem
mento0, elem
el emento
ento 1…..elem
1…..el ementoN)
entoN)
ObjetoComboBox.L
ObjetoComboBox.Lis
istt = Array(el
Ar ray(elem
emento0,
ento0, elem
el emento
ento 1…..element
1…..e lementoN)
oN)
Este método se utiliza solamente mediante código en VBA, no está disponible
en la ventana
ventana de propiedades.
propie dades. En el procedimien
pr ocedimiento
to de inicialización
inicial ización se crea un
código como el que se muestra.
Private Sub UserForm_Initialize()
Dim miarreglo As Variant
miarreglo = Array("uno", "dos", "tres", "cuatro", "cinco")
Me.cboArreglo.List = miarreglo
End Sub
Utilizando la Propiedad List y un Objeto Tipo Range para Añadir un
Rango de Celdas de una Hoja
Ya vimos que List puede ser utilizado para cargar una lista elemento por 
elem
ele mento en conjunto
conjunto con el método AddItem
Add Item,, también puede se
s e puede
p uede cargar 
ca rgar 
un arreglo unidimensional utilizando la función Array, para cargar un Arreglo
de dos dimensiones de forma completa en un solo paso, también se puede
utilizar la propiedad List.
El arreglo
arr eglo puede
puede origin
or iginarse
arse en un
un rango
rango de celdas de la hoja. Así que lo
 primero que
que debemos
debemos hacer es crear el arreglo
arr eglo en un rango
rango de celdas
celda s de una
una
hoja.
Copiemos la dirección del rango que hemos creado, ir a la forma (UserForm)
que estamos
estamos creando
cr eando y hacer
hacer doble clic,
c lic, o con el botón derecho despegar el
menú context
contextual.
ual. Seleccionar
Selecci onar ver código Aparecerá
Aparecer á la
l a vent
ve ntana
ana de código,
có digo, con
un contenedor
contenedor de código. Por defecto aparecerá
aparecer á un conten
contenedor
edor asociado
asocia do al
evento UserForm_Click, cambiar a uno con el evento UserForm_initialize.
Dentro
Dentro del contenedor
contenedor crear un objeto Range
Range y asignarle a la variable
variab le objeto
ob jeto
el rang
r ango
o de la
l a tabla que deseam
desea mos in
i ncluir en la lista
l ista (ListBox)
(ListBox) o caja
c aja
combinada (Com
( ComboBox).
boBox).
Dim miRango As Range (crea la variable para almacenar un objeto tipo
Range).
Set miRango = ThisWorkbook.Worksheets("informe").Range("A2:C6")
Asigna
Asigna a la variabl
va riablee miRango
miRango la referen
re ferencia
cia al rango
rango en la hoja.
Propiedad ColumnCount
Se debe indicar cuantas columnas de datos se van a utilizar, utilizando la
 propiedad
 propied ad ColumnC
ColumnCoun
ount. t. Si se omite
omite este valor, solament
solamentee se mostrará
mostrará la
 primera column
columna del arreglo.
ar reglo. Se puede
puede modificar
modificar en la ventana
ventana de propiedades
 para los
lo s controles
controles ListBox y ComboBox
ComboBox o utilizan
utilizando
do código en un
 procedim
 procedi miento
iento en VBA.
VBA.
Propiedad ColumnHeads
Se puede indicar si la lista in
i ncluye
cluye encabezados para las column
columnas, utilizando
utilizando
la propiedad
pr opiedad ColumnH
ColumnHeads,
eads, con
co n valor true. El valor predeterminado
predeterminado es False.
Fals e.
Se puede cambiar en la ventana de propiedades o mediante código en VBA.
Propiedad ColumnWidth
También se puede indicar el ancho de las columnas, utilizando la propiedad
ColumnW
ColumnWidth,
idth, la cual tiene
ti ene la siguiente sintaxis:
Objeto.ColumnWidth = "ancho1; ancho2; ancho3…."
Donde el objeto puede ser un control ListBox o ComboBox. Los anchos se
especifican
especi fican en unidades
unidades de pixeles y están colocados
colocado s entre comill
comillas
as dobles
dobl es y
separados
separad os por punto
punto y coma
coma ( ; ). Si no se utiliza esta propiedad
propied ad se
desplegarán los anch
a nchos
os de columna
columna para ajustarse a los cont
c ontenidos
enidos de cada
columna. Se puede ocultar la presentación de cualquier columna,
estableciendo su ancho en 0.
El siguiente procedimiento muestra el código utilizado en un evento de
inicialización del formulario para cargar un ComboBox con un rango. Primero
mostraremos una porción de la hoja con el rango.

Private Sub UserForm_Initialize()


Dim miRango As Range
Set miRango = ThisWorkbook.Worksheets("informe").Range("A2:C6")
Me.cboRange.ColumnCount = 3
Me.cboRange.Col
Me.cboRange.Colum
umnH
nHeads
eads = False
Fal se
Me.cboRange.List = miRango.Cells.Value
End Sub
Utilizando la Propiedad List y una Variable para Añadir un Rango de
Celd
Ce ldas
as de una Hoja
Hoj a
En lugar de utilizar un objeto Range, es posible utilizar una variable que sea
igual al rango.
El código de in
i nicialización
icia lización para este
e ste procedim
procedi miento
iento es el
e l que se muestra
muestra a
continuación:
Private Sub UserForm_Initialize()
Dim ElRango As Variant
ElRango
ElRango = Worksheets("inf
orksheets("i nforme").Rang
orme").Range("A2:
e("A2:C6")
C6")
Me.lstElRango.ColumnCount = 3
Me.lstElRango.Lis
Me.lstElRango.Listt = ElRango
End Sub

Utilizando la Propiedad Column y un Objeto Tipo Range para Añadir un


Rango de Celdas de una Hoja
En este método se crea un objeto Range de igual manera que se hizo en el
ejemplo anterior
anterior con la propiedad
propi edad List. La
La diferencia es que cuando
cuando se aplica
apli ca
la propiedad
propieda d Column,
Column, lo que aparece
aparec e como fila en el rango,
rango, se carga como
como
columna
columna en la lista.
l ista. Es decir, aparece
apar ece transpuesto.
transpuesto.
Private Sub UserForm_Initialize()
Dim ColRange As Range
Set ColRange
Co lRange = Worksheets("inf
orksheets("i nforme").Rang
orme").Range("A2:
e("A2:C6")
C6")
Me.cboMiRango.ColumnCount = 3
Me.cboMiRango.Column = ColRange.Cells.Value
End Sub
Para que aparezca
apar ezca en el orden
or den correcto hay que
que aplicar
apl icar la función
función transpose
transpose al
objeto Range
Range creado.
cr eado.
Private Sub UserForm_Initialize()
Dim A As Range
Set A = Worksheets("informe").Range("A2:C6")
B = WorksheetFunction.Transpose(A)
Me.cboMiRango.ColumnCount = 3
Me.cboMiRango.Column = B
End Sub
Utilizando la Propiedad Column y un Rango de Celdas asignado a una
Variable
En lugar de crear un objeto Range también se puede crear una variable para
que almacene el Rango de la hoja. A continuación, un procedimiento de
inicialización
iniciali zación donde
donde la variable
varia ble A almacena
almacena el Rango
Rango de la
l a hoja, y la variable
vari able
B almacena el valor de la Transpuesta de A. Para que la lista aparezca en
correcto
correc to orden, al utilizar la propiedad
propieda d Column,
Column, se debe utiliza la transpuesta
transpuesta
del arreglo A, es decir, el arreglo B.
Private Sub UserForm_Initialize()
A = Worksheets("informe").Range("A2:C6")
B = WorksheetFunction.Transpose(A)
Me.cboMiRango.ColumnCount = 3
Me.cboMiRango.Column = B
End Sub

 Propiedades para Enlazar datos de una Columna


specifica
Propie
Propie dad Te
Te xtColum
xt Colum
La propiedad TextColumn se utiliza para indicar cual columna se utiliza para
recoger datos cuando se utiliza la propiedad Text de un control ListBox o
ComboBox en una lista con múltiples columnas. La sintaxis es
Objeto.TextColumn= Valor 
Donde Objeto es un control ListBox o ComboBox y el valor es un número
entero
entero que indica la
l a posición
posi ción de la columna:
columna: 1 para la prim
pr imera
era colum
c olumna,
na, 2 para
la segunda columna. Cuando se utiliza un valor de 0, se muestra el número de
la fila seleccionada (propiedad ListIndex). Si se utiliza -1, se utilizará la
 primera column
columna cuyo
cuyo ancho
ancho (propiedad
(propi edad columnW
columnWidth
idth)) sea mayor
mayor de 0. Este
es el valor predeterminado.
predeterminado. Esta propiedad se puede cambiar en la ventana
ventana de
 propiedades
 propied ades o mediante
mediante código
código en un
un procedimient
procedimiento
o en VBA.
VBA.
Cuando se utiliza un control ComboBox, en la parte de la caja de texto se
mostrará el valor de la columna especificada con la propiedad TextColumn.
Propiedad BoundColum
La propiedad BoundColumn se utiliza para indicar cual columna se utiliza
 para recoger
re coger datos cuando
cuando se utiliza
utiliza la propiedad
propi edad Value
Value de un
un control
control ListBox
ListBox
o ComboBox en una lista con múltiples columnas. La sintaxis es
Objeto.BoundCol
Obje to.BoundColum
umn=
n= Val
Valor 
or 
Donde objeto es un control ListBox o ComboBox. Y valor es un entero para
indicar lal a posición
posi ción de la column
columna. El valor
va lor predeterm
p redeterminado
inado es 1. Cuando
Cuando se
utili
utiliza
za un
un valor de 0, se muestra
muestra el número
úmero de la fila seleccionada
selec cionada (propiedad
(propi edad
ListIndex).
istIndex). Esta propiedad se puede cam ca mbiar en la ventana
ventana de propiedades
propie dades o
mediante
edi ante código
códi go en un procedimient
proced imiento
o en
e n VBA.
VBA.

 Propiedades para Restrin


Re stringir
gir la Selección
Selecc ión a los Valores
Valores en
la Lista de Elementos en la Caja Combinada
En una caja combinada (ComboBox) se puede seleccionar un elemento del
menú desplegable (drop down menu) y también se puede añadir un elemento
que no
no aparece
apar ece en la lista,
l ista, escribiéndolo
escr ibiéndolo directam
di rectament
entee en la caja
caj a de texto.
texto. Esto
debido a que este control es una combinación de caja de texto y lista.
Propiedad MatchRequired
Para que se pueda ingresar un elemento nuevo, que no aparece en la lista de
elementos
elementos de la caja combinada
combinada se requiere
r equiere que la propiedad
pr opiedad MatchR
MatchRequired
equired
tenga valor False, el cuál es el valor predeterminado. Si el valor de la
 propiedad
 propied ad MatchR
MatchRequired
equired se establece en True,
True, no
no se puede utilizar
utilizar ningún
ningún
valor que no
no esté en la lista
l ista desplegable.
despl egable. De esta manera
manera la selecci
s elección
ón queda
queda
restringida a los elementos que están dentro de la lista. Al intentar usar un
valor diferente generará un mensaje de error, indicando Valor de propiedad no
valido.
La propiedad MatchRequired puede ser cambiada en la ventana de
 propiedades
 propied ades o mediante
mediante código
código en procedimient
procedimientos
os VBA.
VBA.
Si MatchRequired tiene valor False, se puede escribir un valor en la caja
combinada,
combinada, pero no se incluye
incluye dentro de la
l a lista.
l ista. Para que se incluya
incluya en la lista
lis ta
hay que escribir un procedimiento que al determinar que el nuevo elemento no
está dentro de la lista, lo añada a la lista para que esté disponible para un uso
futuro.
Propiedad Style
Esta propiedad permite cambiar el estilo de la lista desplegable (Dropdown
menu).
enu). Esta propiedad
prop iedad tiene
tiene dos valores:
valores :
0 - fmStyleDropDownCombo. Este es el valor predeterminado, y hace que la
caja de texto pueda ser utilizada para ingresar información que no está en la
lista.
2 - fmStyleDropDownList. Este valor hace que la caja de texto de la caja
combinada
combinada no acepte que
que se escriban
escri ban valores. Se restringe
restringe la entrada
entrada solo
s olo a
los elementos que están en la lista.
Esta propiedad puede ser modificada
modificada en la ventana
ventana de propiedades
propie dades o mediante
código en VBA.
Capítul
Capítuloo 5 - Controles:
Controles: Barra
Barra de Desplazamiento,
Botón de Número
Estos dos controles permiten asignar
asignar valores
val ores num
numéricos a la propiedad
propied ad de un
objeto, el cual puede ser un rango de una hoja, el valor de una caja de texto, el
valor de una etiqueta.

 Barra de Desplazamiento
De splazamiento (ScrollBar,
(ScrollBar, scr)
Una barra de desplazamiento es un control que tiene dos botones uno para
disminuir y otro para aumentar una cantidad fija, la cual se establece con la
 propiedad
 propied ad SmallChan
SmallChang ge (cambio pequeño).
pequeño). Cuando
Cuando se hace clic en la zonazona de
la barra deslizadora, entre los botones, los cambios se efectúan de acuerdo al
valor de la
l a propiedad
prop iedad LargeChang
argeChangee (cam
(c ambio
bio grande). En la barra
bar ra tiene un
deslizador
desli zador,, que puede ser movido con la ayuda ayuda del ratón haciendo
haciendo clic
cli c y
manteniendo presionado. Los botones y la zona de la barra pueden ser 
accionados clic
cl ic a clic,
cli c, o manten
manteniendo
iendo presionado.
presi onado. La
La barra
bar ra de desplazam
despla zamientiento
o
 puede colocarse en formaforma horizontal
horizontal o en forma
forma vertical,
vertical , dependiendo
dependiendo de las
dimensiones de la altura y del ancho. Si el ancho es mayor que la altura,
automáticamente se creara una barra de desplazamiento horizontal, en caso
contrario se creara una barra de desplazamiento vertical.
La barra desplazamiento tiene las propiedades Max, para establecer el valor 
máximo, el cual tiene un valor predeterminado de 32767 y Min para establecer 
el valor
va lor mínim
mínimo,
o, el cual tiene un
un valor predeterm
pre determinado
inado de 0. Estos valores
val ores se
 pueden cambiar
cambiar en la ventana
ventana de propiedades
propi edades o mediante
mediante código en un
 procedim
 procedi miento
iento en VBA.
VBA.
En la siguiente figura se muestra una forma donde se han creado tres cajas de
texto
texto y dos barras de desplazam
desp lazamient
iento,
o, que controlan
controlan los valores
valore s en las cajas de
texto 1 y 2. La caja de texto 3 muestra el resultado de la multiplicación de los
valores
valore s que contienen
contienen las cajas 1 y 2.

Para que los valores de las barras de desplazamiento se copien a las cajas de
texto se crean procedimientos que se ejecutan con el evento Change. Cada vez
que se haga un cambio en las barras de desplazamiento se ejecutara el
 procedim
 procedi miento.
iento. A continu
continuación,
ación, los procedim
procedi mientos
ientos para los
l os eventos Ch
Change
ange de
las dos barras de desplazamientos.
Private Sub scrbar1_Change()
Me.txtVal1.V
al 1.Val
alue
ue = scrb
sc rbar
ar1.V
1.Val
alue
ue
Me.txtVal
Me.txtVal3.
3.V
Value
al ue = Val(Me
al (Me.txtV
.txtVal
al1.
1.V
Value)
al ue) * Val
Val(Me
(Me.txtV
.txtVal
al2.
2.V
Value)
al ue)
End Sub
###
Private Sub scrBar2_Change()
Me.txtVal2.Value = scrBar2.Value
Me.txtVal
Me.txtVal3.
3.V
Value
al ue = Val(Me
al (Me.txtV
.txtVal
al1.
1.V
Value)
al ue) * Val
Val(Me
(Me.txtV
.txtVal
al2.
2.V
Value)
al ue)
End Sub
Cuando
Cuando se acciona
acci ona cualquiera
cualquiera de las barras de desplazam
despl azamiento
iento se efectúa la
multiplicación de los valores que contengan las cajas de texto 1 y 2 y el
resultado se colocara en la caja de texto 3. Los valores almacenados en las
cajas de texto son de tipo String, por lo que para transformarlos en números se
utiliza la función Val.
En resumen,
resumen, las propiedades
propieda des más important
importantes
es de las
l as barras
b arras de desplazam
de splazamient
iento
o
(ScrollBar) son las siguientes:
 Name:
 Name: Para asign
as ignar
ar un nombre
nombre al cont
c ontrol
rol
ControlSource: Identifica la dirección de una celda de una hoja o de un campo
ligado al control.
control. El valor
val or predeterm
pr edeterminado
inado es una
una cadena
cade na de texto
texto vacía. Un
ControlSource
ControlSource solo puede estar ligado
l igado a un control.
control.
LargeChange: Para establecer el cambio grande, cuando se presiona en la zona
de la barra de desplazam
despl azamiento
iento ubicada
ubicada entre
entre los
l os dos botones.
botones.
SmallChan
SmallChange:
ge: Para establecer
e stablecer el cambio
cambio pequeño,
pe queño, cuando
cuando se presiona
pre siona en los
dos botones laterales de la barra de desplazamiento.
Max: Valor máximo de la barra de desplazamiento.
Min: Valor mínimo de la barra de desplazamiento.
Orientation: Determina la orientación que tendrá la barra de desplazamiento,
tiene tres valores: Auto, -1, fmOrientationAuto; Vertical, 0,
fmOrie
fmOrientntationV
ationVerti
ertical
cal;; Horizon
Hori zontal,
tal, 1, fmOrie
fmOrient
ntationHorizontal.
ationHorizontal. La propied
prop iedad
ad
Orientation
Orientation tiene
tiene el valor predeterminado
predeterminado en Auto,
Auto, por lo
l o que la barra de
desplazamiento tendrá una orientación dependiendo de las dimensiones de alto
y ancho del control-

 Botón de Número
Núme ro (Spin Button,
Button, spn)
El control de Botón de número (Spin Button) funciona de manera similar que
el control de barra de desplazamiento (ScrollBar), la diferencia es que el
control de botón de número solo tiene dos botones, uno para disminuir y otra
 para incrementar
incrementar en una
una cantidad
cantidad establecida
establec ida con la propiedad
propie dad SmallChan
SmallChange,
ge,
la cual tiene un valor predeterminado de 1. No muestra una barra entre los
 botones,
 botones, por lo
l o que
que no tiene
tiene la propiedad
propie dad LargeCh
LargeChang
ange.
e.
Tiene la propiedad
propied ad Name
Name para
par a cambiar el nombre
nombre del
de l con
co ntrol, pero
per o no tiene
 propiedad
 propied ad caption. Tiene
Tiene las propiedades
propi edades general
generales
es que son utilizadas para
dar formato al control.
La propiedad ControlSource funciona de igual manera que para el control
 barra de desplazamiento.
desplazamiento.
El valor del control se puede asociar a una
una caja
caj a de texto
texto o a una etiqueta
etiqueta para
que se actualice utilizando un procedimiento asociado a un evento Change del
control SpinButton. En el siguiente procedimiento asociado a un evento
Change del control spnVal1 se liga el valor del control txtVal1 al valor del
control spnVal1.
Private Sub spnVal1_Change()
Me.txtVal1.Value = Me.spnVal1.Value
End Sub

Se pueden establecer los valores mínimo y máximo utilizando las propiedades


Min y Max,
Max, las
la s cuales pueden ser cambiadas
cambiadas en la ventana
ventana de propiedades
propie dades o
mediante
edi ante código
códi go en un procedimient
proced imiento
o en
e n VBA.
VBA.
Capítulo 6 - Control: Multi Páginas, Imagen y RefEdit

Control Multi Páginas (Multipage, mpg)


Cuando el formulario tiene muchos controles, puede dar la sensación de estar 
sobrecargada, creando una muy mala impresión en el usuario. Si es necesario
incluir una gran cantidad de controles, lo recomendable es agrupar los
controles
controles por el tipo de información
información que van a recoger,
recoger, y dividirlos
dividir los en
en
diferentes páginas, de forma que en cada página aparezcan pocos controles
 para manejar
manejar inf
i nform
ormación
ación relacionada.
relaci onada. La
La idea es no abrumar
abrumar al usuario con
una forma con demasiados controles en ella. Para añadir un control multi
 página
 página hacer clic en la caja de controles
controles sobre
s obre el icono
i cono del control
control y se coloca
dentro de la forma.
Cuando se crea un control multipágina se crean dos páginas de forma
 predeterminada,
 predeterminada, si se desea
dese a crear una nueva
nueva página,
página, eliminar
eliminar una
una página,
página,
cambiar
cambiar de nombre
nombre o mover, se puede hacer clic
cli c sobre
sobr e el botón derecho del
ratón y aparecerá un menú contextual con estas opciones.

Cada página actúa como si fuese una forma individual, tiene su propia ventana
de propiedades para cambiar las propiedades de cada página. Entre las
 propiedades
 propied ades están:
 Name,
 Name, para dar nombre
ombre a cada págin
pá gina.
a.
Caption,
Caption, para colocar la etiqueta en la pestaña que identifica
identifica la
l a página.
En cada página pueden
pueden colocarse
colocars e los controles
controles que se requieran y su
 programación
 programación es como
como si se tratase de una
una forma
forma independient
independiente.
e.

Control Imagen (Image, img)


Este control se utiliza para insertar una imagen en el formulario. La imagen
 puede ser insertada utilizan
utilizando
do la propiedad
propi edad Picture en la ventana
ventana de
 propiedades.
 propied ades. Las dimension
dimensiones es de la caja
c aja son en pixeles de ancho
ancho y alto. La
La
imagen puede ser un logo, o algún motivo alusivo al formulario para hacerlo
mas interesante.
El control imagen (Image) tiene como todos los controles una propiedad
 Name,
 Name, para asign
asi gnarle
arle un nombre
nombre y las propiedades
propie dades generale
generaless para dar formato
formato
al control como:
BackColor, BackSt
Bac kStyle,
yle, Border
Bor derColor,
Color, BorderSty
Border Style,
le, Height,
Height, Left,
Left, Top,
Top, Width.
Y tiene unas propiedades para controlar la imagen:
Picture,
Picture, para
par a seleccionar
sel eccionar el archivo de la
l a imagen
imagen que
que se desea mostrar. Abre
una caja de dialogo para seleccionar el archivo a mostrar en la caja de
imagen.
PictureAlignment, Para alinear la imagen dentro de la caja. Tiene 5 valores:
- fmPictureAlignmentTopLeft, 0
- fmPic
fmPictureAl
tureAlignm
ignmentT
entTopRi
opRigh
ght,
t, 1
- fmPictureAlignmentCenter, 2
- fmPic
fmPictureAl
tureAlignm
ignmentBottom
entBottomLeft
Left,, 3
- fmPic
fmPictureAl
tureAlignm
ignmentBottom
entBottomRight,
Right, 4
Por defecto la imagen está alineada en el centro.
PictureSizeMode, Para determinar la forma en que se mostrara la imagen, en
caso de que el tamaño sea diferente al tamaño de la caja. Presenta 3 valores:
- fmPictureSizeModeClip, 0. Si la imagen es de mayor tamaño que la caja
creada solo aparece una
una porción de ella (clip)
- fmPictureSizeModeStretch, 1. La imagen ocupa toda la caja, pero aparece
deformada, estirada para lograr abarcar todo el marco (no se conserva la
relación de aspecto)
- fmPictureSi
fmPictureSizeM
zeModeZoom
odeZoom,, 3. La im
i magen ocupa todo el marco,
arc o, pero
pe ro mantiene
la relación de aspecto.
-Pictu
-Pic tureTili
reTiling
ng,, Si la imagen
imagen está en el modo de fmPictureSi
fmPictureSizeM
zeModeZoom
odeZoom y no
completa
completa todo el cuadro, se añaden
añad en porciones de la imagen
imagen para ocupar
oc upar todo
el cuadro si el valor de la propiedad PictureTiling es True.
SpecialEffect,
SpecialEffect, para crear un efecto
efecto especial
espe cial en la im
i magen que se inserta en el
cuadro de imagen. Tiene 5 valores:
- fmSpecialEffectFlat, 0.
- fmSpecialEffectRaised, 1.
- fmSpecialEffectSunken, 2.
- fmSpecialEffectEtched, 3.
- fmSpeci
fmSpecialEffectBu
alEffectBum
mp, 6.

Control
Control RefEdit (RefEdit,rfe)
(Ref Edit,rfe)
Este control
control no aparece de forma
forma predeterm
pr edeterminada
inada en la caja de herramientas,
herramientas,
 para añadirlo
añadi rlo hay que ir al menú
menú en VBE y en la pestaña de herramien
herramientas
tas
seleccionar 
Al hacer clic
cli c aparece
apar ece una
una caja
caj a de dialogo,
d ialogo, con un
un listado bastante
bastante grande
grande de
controles de aplicaciones de Microsoft y de otros fabricantes, se localiza el
control
control que deseamos
deseamos incluir en la caja
ca ja de controles
controles y se marca.
marca. Aparecerá
Apare cerá en
en
la caja
ca ja de herramientas.
herramientas.
El control
control RefEdit
RefEdit permite
permite crear
crea r una
una caja
caj a para recoger la dirección
direc ción de un
rango
rango en una
una hoja.
hoja. La dirección
direcc ión será recogida
r ecogida en la caja
caj a creada
crea da al marcar el
rango sobre la hoja. También se puede ingresar la dirección directamente,
escribiendola.
A continuación, se muestra una forma donde se incluye un control RefEdit, una
caja de texto y un botón de comando. Se va a realizar un procedimiento muy
sencillo que consiste
consiste en seleccionar
sele ccionar un rango
rango y calcular la
l a suma
suma de los
l os valores
val ores
contenidos en el rango.

Se programó el botón de comando con un procedimiento asociado al evento


Click. Para usar la cadena
c adena de texto
texto que represent
repr esentaa el rango
rango se está creando
crea ndo un
un
objeto Range de nombre miRango y se está haciendo igual a
Range(rfeRango1.Text), donde rfeRango1 es el nombre del control RefEdit y
Text es una propiedad que devuelve un valor tipo String. La función suma se
está introduciendo con la propiedad WorksheetFunction, la cual permite
util
utilizar
izar una
una funció
funciónn de Excel.
Excel .
Private Sub cmdGO_Click()
Dim miRango As Range
Set miRango = Range(rfeRango1.Text)
Me.txtResultado = Wor
WorksheetFunction.Sum
ksheetFunction.Sum(miRango)
(miRango)
End Sub
elementos,
elementos, o haciendo clic sobre
s obre la
l a forma
forma y arrastrando para dibujar un
rectángulo sobre la forma, los controles que están dentro del rectángulo serán
seleccionados.
selec cionados. Las opciones de alineam
al ineamient
iento
o son:
s on:
Alineación en sentido horizontal: Izquierda, Centro, Derecha
Alineación en sentido
sentido vertical: Superio
Superior,
r, Medio,
Medio, Inferior
Inferior y
Alineación a la cuadricula.
Los elem
el ement
entos
os deben
debe n estar seleccionados
sele ccionados antes de aplicar
apl icar el formato
formato de
alineación.
Igualar Tamaño
Permite hacer que las dimensiones de alto, ancho o ambas simultáneamente
sean iguales en los elementos seleccionados dentro de la forma. Tiene tres
opciones: igualar
igualar alto, igualar ancho e igualar ambos.
Ajustar Tamaño al Contenido
Si la caja tiene un texto asociado a la propiedad caption, el tamaño de la caja
del control se ajustará automáticamente al tamaño del texto.
Ajustar tamaño a la Cuadrícula
La caja del control se ajustará para que coincida con la marca de la cuadricula
más próxima.
Espacio Horiz
Horiz ontal
Permite que los elementos seleccionados estén igualmente espaciados en el
sentido horizontal. Tiene 4 opciones: Igualar espaciamiento. Aumentar 
espaciamiento, Disminuir espaciamiento y Quitar espaciamiento.
Espacio Vertical
Permite que los elementos seleccionados estén igualmente espaciados en el
sentido vertical. Tiene 4 opciones: Igualar espaciamiento. Aumentar 
espaciamiento, Disminuir espaciamiento y Quitar espaciamiento.
Centrar en el Formulario
Permite
Permite centrar los
l os elem
e lement
entos
os seleccionados
selecc ionados en el formulario.
formulario. Tiene dos
opciones: Centrar los elementos en el sentido horizontal y centrar los
elementos
elementos en el sentido
sentido vertical.
Organizar los Botones
Permite organizar los botones de comando y ubicarlos en una posición
seleccionada.
selec cionada. Tiene
Tiene dos opciones:
opci ones: Abajo y Derecha.
Agrupar y Desagrupar
Agrupar permite agrupar varios elementos y manejarlos como una sola unidad,
y Desagrupar permite desagrupar un grupo de elementos previamente
agrupados,
agrupados, a fin de manipular
anipular cada elemento
elemento por separado.
separad o.
Orden
Cuando existen elementos que se sobreponen, es posible decidir cuál elemento
está al frente y cual elemento detrás. Tiene cuatro opciones: Traer al frente,
Enviar
Enviar hacia atrás, Traer adelant
ade lantee y Enviar
Enviar al fondo.
fondo.
Formato Utilizando Propiedades
Adicional a estas herramientas de formato, existen un conjunto de propiedades
que permiten
permiten modificar
modificar algunas
algunas de las
la s características
car acterísticas de formato
formato de los
l os
controles
controles.. Estas propiedades
propie dades pueden cambiars
cambiarsee en la ventana
ventana de propiedades
pr opiedades
o utilizando código en procedimientos de VBA. Estas propiedades son:
Height, cambia el alto del control.
Width, cambia el ancho del control.
Top, cambia la posición del control con respecto al borde superior del
formulario.
Left,
eft, cambia
cambia la
l a posición
posi ción del con
co ntrol con respecto
respec to al borde izquierdo
izquierdo del
formulario.
BackColor,
BackColor, cambia
cambia el
e l color
c olor de fondo
fondo del control.
control.
BackStyle, cambia el estilo del fondo.
Font, cambia el tipo de fuente, tamaño, resaltado, itálica y otros.
ForeColor, cambia
cambia el color
c olor de la
l a fuent
fuentee que utili
utiliza
za el control para
par a el texto
texto que
que
se coloca
col oca con la propiedad
pr opiedad caption, o el texto
texto que es ingresado
ingresado como
como dato en
una caja de texto o en una lista o caja combinada.
Capítulo 8 - Eventos
Los formularios y sus controles pueden ser programados para que reaccionen
a eventos, es decir que hagan una acción cuando algo ocurre. Un evento puede
ser cambiar el valor de una caja de texto, cambiar el valor de una barra de
desplazamiento, hacer clic en un botón de comando y muchos otros. En los
ejemplos que hemos realizado durante el desarrollo de este libro se han
utilizado eventos, sin embargo, no se habían definido formalmente.
Para especificar
es pecificar la forma
forma en que el formulario
formulario o un control
control reaccionara
reacci onara a un
evento
evento se debe escribi
es cribirr un procedimiento,
procedimiento, el cual va contenido
contenido dentro
dentro de un
contenedor de código, que es generado automáticamente en el módulo del
formu
formulario
lari o (UserForm).
(UserForm). Para acceder a la l a ventana
ventana de código, y escribir
escribi r un
 procedim
 procedi miento
iento asociado
asocia do a un evento
evento se puede hacer
hacer doble
dobl e clic sobre
s obre el
formu
formulario
lari o o sobre
sob re alg
al guno
uno de los
l os controles, o se
s e puede hacer clic
cli c en el botón
derecho del ratón para desplegar un menú contextual, allí seleccionar y hacer 
clic en la opción ver código.

En la ventana de código se creará un contenedor asociado a un control y a un


evento, si el control es un botón de comando se generará un contenedor para un
evento
evento de hacer clic
c lic sobre el
e l botón. Sin embargo,
embargo, se pueden seleccionar otros
objetos y otros event
eve ntos
os de acuerdo a lo
l o que se requiera manipulando
manipulando los
menús desplegables que se encuentran en la parte superior de la ventana de
código.
El nombre del procedimiento Sub que se crea es una combinación del nombre
del formulario o del control, seguido por un guion bajo y el nombre del evento
con un
un par de parént
par éntesis
esis vacíos.
vacíos .

En la parte superior izquierda


izquierda está el menú de los controles
controles,, incluyendo
incluyendo la
UserForm y en el lado derecho aparece
aparec e el menú de los event
e ventos
os asociados
asoc iados a los
controles
controles que se seleccionen
sele ccionen..

Por ejemplo, para los botones de comando se tienen los siguientes eventos:
BeforeDropOver 
BeforeDropOrPaste
Click 
DblClick 
Enter 
Error 
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
Siendo el event
e vento
o click
cl ick el evento
evento usado con mayor
mayor frecuencia
frecuencia para los
controles de botón de comando.
Para los
l os con
co ntroles de caja
caj a de texto
texto (Text
(TextBox
Box)) y las barras de desplazam
des plazamiento
iento y
 botón de número
número el event
e ventoo Chang
Changee es el más utilizado.
utilizado.
A continuación, mostraremos los procedimientos asociados a los eventos para
los controles caja de texto y botón de comando del formulario de ejemplo.
Dim A As Double
Dim B As Double
Dim C As Double
###
Private Sub cmdSumar_Click()
C=A+B
Me.txtC = C
End Sub
###
Private Sub txtA_Change()
A = Val(Me.txtA.Text)
End Sub
###
Private Sub txtB_Change()
B = Val(Me.txtB.Text)
End Sub
Capítulo 9 - Interacción Entre Formularios, VBA y
Hojas de Excel
Los formularios constituyen una de las opciones para el intercambio de
información con los procedimientos en VBA y con las hojas de Excel. En los
formularios se tienen varios controles que recogen información del usuario,
como lo son las cajas de texto, cuadros de listas, cajas combinadas, casillas
de verificación,
veri ficación, botones
botones de opción, barras de desplazam
despl azamient
iento,
o, botones
botones de
número
número y otros.

 Interacción Entre
Entre el
e l Formulario y VBA
Los valores
val ores qu
q ue son recogidos en los controles
controles pueden ser asign
a signados
ados a
variables dentro de VBA, y ser utilizados en procedimientos. Existen
 procedim
 procedi mientos
ientos de lectura, donde
donde los valores
val ores de un control
control son
so n asignados
asignados a
una
una variable
var iable y existen
existen procedimiento
procedimiento de escritu
escr itura
ra donde los
l os resultados
r esultados del
 procedim
 procedi miento
iento son enviados
enviados de vu
v uelta al formulario,
formulario, a un control
control que puede
puede
ser una caja de texto, una etiqueta o un cuadro de lista.

El intercambio
intercambio de inform
información
ación puede realizarse
reali zarse sin necesidad de incluir las
hojas de Excel.
Procedimiento
Procedimiento de Le
Lectura
ctura
Lee un valor del formulario (UserForm) y lo incorpora a un procedimiento.
Este tipo de declar
d eclaración
ación tiene la sigu
si guient
ientee sint
si ntaxis:
axis:
Variable = UserFormName.ControlName.Text
Variable = UserFormName.ControlName.Value
Estas declaraciones pueden incluirse en eventos Change o en eventos Click. A
continuaci
continuación,
ón, un ejemplo de
d e un procedi
pro cedimmiento que utiliza
utili za un evento Change
Change
 para recoger
re coger el valor de una caja de texto
texto (Text
(TextBox
Box)) y asignarlo
asignarlo a una
una
variable.
Private Sub txtValA_Change()
A = Val(frmEjemplo2.txtValA.Value)
End Sub
Procedimiento de Escritura
Una vez que se ejecuta el procedimiento los resultados pueden ser devueltos
al formulario
formulario utilizando
utilizando declaraci
decl araciones
ones de escritu
escr itura,
ra, las
l as cuales tienen
tienen la
siguiente sintaxis:
UserFormName.ControlName.Value = Expresión
UserFormName.ControlName.Text = Expresión
Se puede utilizar una
una etiqueta para devolver un valor al formu
formulario:
lari o:
UserFormNam
ser FormName.LabelControlName.Caption
e.LabelControlName.Caption = Expresió
Expre sión
n
Tambié
ambiénn se puede
p uede utilizar
utili zar un control
control de Lista,
is ta, utilizando el
e l método AddItem.
AddItem.
UserFormName.ListBoxName.AddItem Expresion
Donde
Donde expresión puede ser una variable
variabl e que almacena
almacena el valor de un cálculo o
una expresión aritmética propiamente dicha que es ejecutada dentro de un
 procedim
 procedi miento
iento asociado
asocia do a un evento
evento como
como hacer
hacer clic
cl ic en un
un botón
botón de comando
comando
o al evento Change de algún control, como una caja de texto. A continuación,
un procedimiento para un evento Click de un botón de comando, que realiza
una operación aritmética y devuelve el resultado a una caja de texto.
Private Sub
Sub cmdMu
cmdMultiplic
ltiplicar_Clic
ar_Click
k()
C=A*B
frmEjemplo2.txtValC.Value = C
End Sub

 Interacción Entre
Entre el
e l Formulario y la Hoja
Propie
Propie dad ControlSource
La propiedad ControlSource permite enlazar el valor de un control con una
celda de la hoja, el enlace es en
e n ambas
ambas direcci
di recciones.
ones. Los
Los controles que tienen
esta propiedad son:
Caja de Texto (TextBox)
Lista (ListBox)
Caja Combinada
Combinada (ComboBox)
(ComboBox)
Casilla de Verificación (CheckBox)
Botón de Opción (Option Button)
Botón de Alternar (Toggle Button)
Barra de Desplazamiento
Desplazamiento (ScrollBar)
Botón de Número (Spin Button)
Esta propiedad puede ser cam
ca mbiada en la ventana
ventana de propiedades
propie dades o utilizando
tilizando
un procedimiento en VBA.

La direcci
di rección
ón se coloca
col oca con la siguient
siguientee sint
si ntaxis:
axis: nombre
nombre de la
l a hoja seguido de
un signo
signo de adm
ad miración
iraci ón y la direcci
di rección
ón de la celda:
cel da: Hoja1!A
Hoja1 !A1.
1. Si el nombre
nombre de
la hoja tiene espacios o caracteres especiales hay que colocar el nombre de la
hoja entre comillas simples, 'mi hoja'!A1.
Propie
Propie dad RowSource
RowSource
RowSource es una
una propiedad
pr opiedad de los
l os controles Lista (ListBox)
(ListBox) y Caja
Caja
Combinada (ComboBox), que permite asociar un rango de una hoja con los
elementos de una Lista o de una caja combinada.
La referencia al rango tiene la siguiente sintaxis, nombre de la hoja seguido de
signo de admiración (!) y el rango en formato A1, ejemplo: Hoja1!A2:A8. Si
el nombre tiene espacios vacíos debe encerrarse entre comillas simples,
ejemplo: 'mi
'mi hoja'!A2:A8.
hoja'!A2:A8.
Si la Lista o la Caja Combinada tiene múltiples columnas hay que establecer 
el número de columnas con la propiedad ColumnCount, para que las columnas
aparezcan en el cuadro de Lista o Caja Combinada
Combinada creado.
crea do.
La propiedad RowSource y ColumnCount pueden ser cambiadas en la ventana
de propiedades o mediante código en un procedimiento en VBA.

Utilizando código de VBA para Enlazar Formulario y


oja de Excel 
Se pueden utilizar declaraciones de lectura y escritura para leer los valores
desde un formulario y escribirlos en una hoja.
Declaracion
Declaracionee s de Lectu
Lect ura
Se pueden leer los valores
va lores almacenados
almacenados en los controles y asignarlos
asignarlos a una
una
variable.
varia ble. La sintaxis
sintaxis es la
l a sigu
si guient
iente:
e:
Variable = UserFormName.ControlName.Text
Variable = UserFormName.ControlName.Value
Ejemplo:
ValorA = UserForm1.txtValor.Value
Asigna a la variable ValorA el contenido del control Caja de Texto de nombre
txtValor.
Declaraciones de Escritura
Se pueden escribir valores almacenados en variables, o en las propiedades
Text o Value de los controles a rangos de celdas de la hoja.
Referencia del Rango = Variable
Referencia del Rango
Rango = UserFormNam
ser FormName.ControlName.T
e.ControlName.Text
ext
Referencia del Rango = UserFormName.ControlName.Value
Ejemplo:
Worksheets("Hoja1").Range("A1") = Me.txtA.Value
Coloca el valor del control Caja de texto de nombre txtA del formulario activo
(Me) en la celda A1 de la Hoja1 del libro activo.

Utilizando
Utilizando El Formulario de Forma Independient
Indepe ndientee
Los formularios,
formularios, a pesar de que son parte de la aplicación
aplic ación Excel,
Excel, pueden ser 
diseñados
diseñad os y programados
programados para
pa ra ser
s er "seudo independientes".
independientes". Decimos
Decimos seudo
se udo
independient
independientes
es porque
por que no
no se utili
utilizan
zan las hojas de cálculo
cá lculo de Excel
Excel para
almacenar o intercambiar información con el formulario, pero no son
totalmente independientes, porque tienen que ser ejecutados desde la
aplicación.
Todo el proceso de entrada
entrada de datos, procesam
proc esamient
iento
o y salida de result
res ultados
ados se
realiza entre los formularios y VBA. La entrada y salida de datos en el
formulario y VBA para programar la lectura, procesamientos, cálculos y
escritu
escri tura
ra de vuelta
vuelta al formu
formulario.
lari o.
Para dar la im
i mpresión
presi ón de que el formulario
formulario es e s una
una aplicaci
apl icación
ón independiente
independiente se
 puede program
programarar para qu
q ue el objeto
obj eto Application (Excel) tenga
tenga la propiedad
Visible igual a False, una vez que la forma se muestre. Hay que recordar que
debe tenerse un botón dentro
dentro del formulario
formulario que regrese la l a visibil
vis ibilidad
idad de
Excel, porque si no pasaremos un momento de angustia tratando de ver como
recuperamos
recuperamos Excel. En caso de que eso suceda tendríamos
tendríamos que recurrir
recurri r al
administrador de tareas, y desde allí cerrar la sesión de Excel. Cuando Excel
se abre
abr e por defecto la propiedad
propi edad Visi
Visible
ble está
es tá en True,
True, enton
entonces
ces las
l as hojas de
Excel son visibles. A continuación, los procedimientos para hacer que un
formulario parezca como una aplicación independiente.
1.- Crear el formulario
formulario de la forma
forma normal,
normal, con
c on los controles que se requieran.
2.- Crear un botón en una hoja y programarlo para ocultar Excel y abrir el
formulario.
Public
Public Sub
Sub HacerIn
Hacer Invisi
visibleExcel()
bleExcel()
Application.Visi
Application.Visible
ble = False
frmList.Show
End Sub
Es important
importantee el orden de las
l as declara
de claraciones.
ciones. Primero hay que ocultar
ocultar la
la
aplicación y luego mostrar el formulario.
3.- Cuando se cree el formulario crear un botón, que al ocultar el formulario
haga
haga que la propiedad
pr opiedad Visible
isi ble de la Application
Appli cation regrese
regrese a su valor True.
Private Sub cmdCerrar
cmdCerrar_Click()
_Click()
Application.Visible = True
Me.Hide
End Sub
En caso de que se desee cerrar con la X en la parte superior derecha de la
 barra de título
título es conveniente
conveniente program
programar ar el event
e vento
o UserForm_Q
UserForm_Query
ueryClose
Close
 para que también
también devuelva
devuelva la
l a visibili
visi bilidad
dad de Excel.
Excel.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.Visible = True
Me.Hide
End Sub
Resumen
En este libro hemos presentado una visión general de los formularios
(UserForms),
(UserForms), y los controles están
e stándar
dar que se present
pres entan
an en la caja de
herramientas, revisando el uso de los mismos.
Hemos
Hemos revisado
re visado la forma
forma de diseñar
d iseñar y constru
construir
ir los formulari
formularios,
os, las
la s
herramient
herramientasas para
pa ra dar
da r formato,
formato, las propiedades
propieda des más important
importantes
es de los
controles, la forma en que se cambian los valores de estas propiedades
utilizando la ventana de propiedades o mediante código en procedimientos en
VBA.
Se ha revisado
revis ado la
l a forma
forma de programar
programar los
l os formu
formularios
lari os y sus controles
controles
utili
utilizan
zando
do los
l os diferen
di ferentes
tes eventos que proporcionan
proporci onan los controles
controles..
Se ha visto la forma en que interactúan los formularios con VBA y con las
hojas de Excel. La forma en que pueden utilizarse los Formularios como si
estos fuesen una seudo aplicación.
A lo largo de los 9 capítulos de este libro se ha tratado de mostrar el lado
 practico de los
l os conceptos y se han añadido una
una gran cantidad
cantidad de figuras
figuras y
ejemplos para ayudar
ayudar a la com
c omprensión
prensión de los mismos.
Sincerament
Sinceramentee espero
esper o que este libro
libr o haya
haya sido
si do de utilidad para ti, y de ser
se r así
 por favor recomiéndalo
recomiéndalo a tus amigos.
amigos.
Acerca del Autor
Luis Brito es un consultor de Ingeniería. Ha tenido interés en VBA para Excel
 por más
más de 15 años y haha recopilado
recopi lado durante
durante este tiempo
tiempo una
una gran cantidad
cantidad de
notas
notas de diferentes
diferentes fuentes
fuentes que han
han servido para la
l a preparaci
prepa ración
ón de este libro.
libr o.
Ha escrito una gran cantidad de artículos sobre el uso de VBA Excel y ha
escrito varios libros de la serie VBA Excel, del cual este es la tercera entrega.

También podría gustarte