Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Tienes alguna pregunta sobre la actualizacin a Windows 10 o sobre el mejor momento


para realizarla? Haz clic aqu
Al usar este sitio acepta el uso de cookies para anlisis, contenido personalizado y publicidad.
Ms informacin

Soporte

Cmo utilizar Visual Basic para Aplicaciones


(VBA) para cambiar los formularios de
usuario en Excel
Ha finalizado el soporte tcnico para Office
2003

Microsoft puso fin al soporte tcnico para Office 2003 el 8 de abril de 2014. Este cambio ha
afectado a las actualizaciones de software y las opciones de seguridad. Sepa qu significa esto
en su caso y cmo puede mantenerse protegido.

IMPORTANTE: Este artculo ha sido traducido por un software de traduccin automtica de


Microsoft http://support.microsoft.com/gp/mtdetails en lugar de un traductor humano.
Microsoft le ofrece artculos traducidos por un traductor humano y artculos traducidos
automticamente para que tenga acceso en su propio idioma a todos los artculos de nuestra
base de conocimientos Knowledge Base. Sin embargo, los artculos traducidos
automticamente pueden contener errores en el vocabulario, la sintaxis o la gramtica, como
los que un extranjero podra cometer al hablar el idioma. Microsoft no se hace responsable de
cualquier imprecisin, error o dao ocasionado por una mala traduccin del contenido o como
consecuencia de su utilizacin por nuestros clientes. Microsoft suele actualizar el software de
traduccin frecuentemente.
829070

RESUMEN
https://support.microsoft.com/eses/kb/829070

1/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

En este artculo se describe cmo cambiar los formularios de usuario mediante programacin
en Microsoft Excel. Incluye ejemplos y Microsoft Visual Basic para Aplicaciones macros VBA
que muestran cmo sacar partido de las capacidades de los formularios de usuario y cmo
utilizar los controles de ActiveX que estn disponibles para los formularios de usuario.
Una introduccin a los principios bsicos de los formularios de usuario describe cmo
mostrar los formularios de usuario, cmo ocultar temporalmente UserForms y cmo
descartar UserForms. Tambin se muestra cmo utilizar los eventos ms comunes que estn
asociados con los formularios de usuario, el evento Initialize , el evento Click y el evento
Terminate . Uno o ms de los siguientes ejemplos muestran cmo utilizar cada uno de los
siguientes controles de ActiveX en un formulario de usuario:
Control Label
Control TextBox
Control CommandButton
Control ListBox
Control ComboBox
Control Frame
Control OptionButton
Control de casilla de verificacin
Control ToggleButton
Control TabStrip
Control multiPage
Control ScrollBar
Control SpinButton
Control RefEdit
Control de imagen

INTRODUCCIN
En este artculo se describe cmo utilizar VBA para realizar cambios en los formularios de usuario
en Excel.
https://support.microsoft.com/eses/kb/829070

2/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

MS INFORMACIN
Microsoft proporciona ejemplos de programacin nicamente con fines ilustrativos, sin ninguna
garanta expresa o implcita. Esto incluye, pero no se limita a, las garantas implcitas de
comerciabilidad o idoneidad para un fin determinado. Este artculo asume que est familiarizado
con el lenguaje de programacin que se muestra y con las herramientas que se utilizan para crear
y depurar procedimientos. Los ingenieros de soporte tcnico de Microsoft pueden explicarle la
funcionalidad de un determinado procedimiento, pero no modificarn estos ejemplos para
ofrecer mayor funcionalidad ni crearn procedimientos que cumplan sus requisitos especficos.

Conceptos bsicos de UserForm


Cmo mostrar un UserForm
La sintaxis que se utiliza para mostrar un formulario de usuario mediante programacin es la
siguiente:

UserFormName. Mostrar
Para mostrar un formulario de usuario denominado UserForm1, utilice el cdigo siguiente:

UserForm1.Show

Puede cargar un formulario de usuario en la memoria sin que se muestre realmente. Puede tomar
un UserForm complejo varios segundos en aparecer. Debido a que un formulario de usuario se
puede cargar en la memoria, usted puede decidir cundo incurrir en esta sobrecarga. Para cargar
UserForm1 en la memoria sin mostrarlo, utilice el cdigo siguiente:

LoadUserForm1

Para mostrar el formulario de usuario, debe utilizar el mtodo Show que se ha mostrado
anteriormente.

Cmo ocultar temporalmente un UserForm


Si desea ocultar temporalmente un UserForm, utilice el mtodo Ocultar . Puede ocultar un
formulario de usuario si la aplicacin implica mover entre formularios de usuario. Para ocultar un
formulario de usuario, utilice el cdigo siguiente:

UserForm1.Hide

https://support.microsoft.com/eses/kb/829070

3/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Para obtener informacin adicional, haga clic en el nmero de artculo siguiente para verlo en
Microsoft Knowledge Base:
213747 XL2000: cmo mover entre formularios de usuario personalizado con botones de
comando

Cmo quitar un formulario de usuario de la memoria


Para quitar un formulario de usuario de la memoria, utilice la instruccin de descarga . Para
descargar un formulario de usuario denominado UserForm1, utilice el cdigo siguiente:

UnloadUserForm1

Si descarga un formulario de usuario en un procedimiento de evento asociado a un formulario de


usuario o que est asociado con un control en un formulario de usuario por ejemplo, hace clic en
un control CommandButton , puede utilizar "Me" palabra clave en lugar del nombre del objeto
UserForm. Para utilizar el "yo" palabra clave para descargar un formulario de usuario, utilice el
cdigo siguiente:

UnloadMe

Cmo utilizar los eventos de formulario de usuario


Los formularios de usuario admiten muchos eventos predefinidos que puede adjuntar a los
procedimientos de VBA. Cuando se produce el evento, se ejecuta el procedimiento que se ha
vinculado al evento. Una sola accin realizada por un usuario puede iniciar varios eventos. Entre
los ms frecuentemente utilizados eventos para un formulario de usuario son el evento Initialize ,
el evento Click y el evento Terminate .
Nota: Un mdulo de Visual Basic que contiene un procedimiento de evento puede denominarse
como un mdulo "UserForm detrs". Un mdulo que contiene procedimientos de evento no est
visible en la coleccin de mdulos de la ventana del Editor de Visual Basic de Microsoft Project
Explorer. Debe haga doble clic en el cuerpo de un formulario de usuario para ver el mdulo de
cdigo de UserForm.

Cmo interceptar eventos de UserForm


Para interceptar los eventos de formulario de usuario, siga estos pasos:
1. Crear un nuevo libro en Excel.
2. En el men Herramientas , elija Macroy, a continuacin, haga clic en Editor de Visual
Basic.
3. En el men Insertar , haga clic en UserForm para insertar un UserForm en el libro.
4. Haga doble clic en el formulario UserForm para mostrar la ventana de cdigo para el
https://support.microsoft.com/eses/kb/829070

4/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

formulario UserForm.
5. En el mdulo, escriba el cdigo siguiente:

PrivateSubUserForm_Click()
Me.Height=Int(Rnd*500)
Me.Width=Int(Rnd*750)
EndSub
PrivateSubUserForm_Initialize()
Me.Caption="EventsEventsEvents!"
Me.BackColor=RGB(10,25,100)
EndSub
PrivateSubUserForm_Resize()
msg="Width:"&Me.Width&Chr(10)&"Height:"&Me.Height
MsgBoxprompt:=msg,Title:="ResizeEvent"
EndSub

PrivateSubUserForm_QueryClose(CancelAsInteger,CloseModeAsI
nteger)
msg="NowUnloading"&Me.Caption
MsgBoxprompt:=msg,Title:="QueryCloseEvent"
EndSub
PrivateSubUserForm_Terminate()
msg="NowUnloading"&Me.Caption
MsgBoxprompt:=msg,Title:="TerminateEvent"
EndSub

6. En el men Ejecutar , haga clic en Ejecutar Sub/UserForm.


Cuando se carga el formulario UserForm por primera vez, la macro utiliza el evento Initialize para
cambiar la propiedad Caption del objeto UserForm "Eventos eventos eventos!" y la propiedad
BackColor en azul oscuro.
Al hacer clic en el formulario UserForm, inicia el evento Click . El evento Click cambia de tamao
https://support.microsoft.com/eses/kb/829070

5/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

el formulario UserForm. Dado que cre un procedimiento para el evento Resize , recibe dos
cuadros de mensaje despus de hacer clic en el formulario UserForm. El evento Resize se produce
dos veces porque el cdigo tras el evento Click cambia la propiedad Width y la propiedad Height
del objeto UserForm.
Cierre el formulario UserForm, inicia el evento QueryClose . El evento QueryClose muestra un
cuadro de mensaje que contiene el ttulo que le asign el UserForm en el cdigo para el evento
Initialize . Puede utilizar el evento QueryClose cuando desea realizar un determinado conjunto de
acciones si el usuario cierra el formulario UserForm.
El evento Terminate , a continuacin, genera un cuadro de mensaje que indica que el ttulo de
UserForm UserForm1. El evento Terminate se produce despus de que el formulario de usuario se
quita de la memoria y el ttulo de UserForm devuelve a su estado original.

Cmo impedir que un formulario de usuario se cierre mediante el botn Cerrar


Cuando se ejecuta un formulario de usuario, se agrega un botn Cerrar en la esquina superior
derecha de la ventana UserForm. Si desea impedir que se cierre mediante el botn Cerrar el
formulario UserForm, debe atrapar el evento QueryClose .
El evento QueryClose se produce justo antes de que se descargue de la memoria el UserForm.
Utilice el argumento CloseMode del evento QueryClose para determinar cmo se cerr el
UserForm. El valor de vbFormControlMenu para el argumento CloseMode indica que se ha hecho
clic en el botn Cerrar . Para mantener el formulario UserForm activo, establezca el argumento
Cancel del evento QueryClose en True. Para utilizar el evento QueryClose para impedir que un
formulario de usuario se cierra mediante el botn Cerrar , siga estos pasos:
1. Crear un nuevo libro en Excel.
2. En el men Herramientas , elija Macroy, a continuacin, haga clic en Editor de Visual
Basic.
3. En el men Insertar , haga clic en UserForm para insertar un UserForm en el libro.
4. Agregue un control CommandButton en el formulario UserForm.
5. Haga doble clic en el formulario UserForm para mostrar la ventana de cdigo para el
formulario UserForm.
6. En la ventana cdigo, escriba el cdigo siguiente:

PrivateSubCommandButton1_Click()
UnloadMe
EndSub
PrivateSubUserForm_QueryClose(CancelAsInteger,CloseModeAsI
nteger)
IFCloseMode=vbFormControlMenuThen
https://support.microsoft.com/eses/kb/829070

6/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Cancel=True
Me.Caption="ClicktheCommandButtontocloseMe!"
EndIf
EndSub

7. En el men Ejecutar , haga clic en Ejecutar Sub/UserForm.


El formulario de usuario no se cierra al hacer clic en el botn Cerrar . Debe hacer clic en el control
CommandButton para cerrar el formulario UserForm.
Para obtener informacin adicional, haga clic en los nmeros de artculo siguientes para verlos en
Microsoft Knowledge Base:
207714 XL2000: errores de tiempo de ejecucin mediante la coleccin UserForms
211527 XL2000: no se puede arrastrar el control de UserForm a una hoja de clculo
211868 XL2000: Error al ejecutar la macro que inserta el control en UserForm
213582 XL2000: problemas al utilizar la macro para agregar el control a UserForm
213583 XL2000: no se puede mostrar los formularios de usuario en otros proyectos
213736 XL2000: cmo determinar la clave presiona junto con el botn primario del mouse
213744 XL2000: cmo ocultar temporalmente un UserForm
213747 XL2000: cmo mover entre formularios de usuario personalizado con botones de
comando
213749 XL2000: cmo utilizar un formulario de usuario para introducir datos
213768 XL2000: cmo cambiar dinmicamente el tamao de un formulario de usuario
213774 XL2000: cmo crear una pantalla de inicio con un formulario de usuario

Cdigo de VBA
Excel incluye quince controles diferentes que puede utilizar en los formularios de usuario. Esta
seccin contiene varios ejemplos que utilizan estos controles mediante programacin.
Nota: El cdigo de VBA que se incluye en este artculo no contiene ejemplos que afectan a todas
las propiedades y los eventos para los controles. Si se necesita, puede utilizar la ventana
Propiedades para ver una lista de las propiedades que estn disponibles para un control. Para ver
una lista de propiedades, en el men Ver , haga clic en Ventana Propiedades.

Cmo utilizar el modo de diseo para controles de edicin


Cuando se utiliza el Editor de Visual Basic para disear un cuadro de dilogo, est utilizando el
https://support.microsoft.com/eses/kb/829070

7/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

modo de diseo. En modo de diseo, puede editar los controles y puede cambiar las propiedades
de un control en un formulario de usuario en la ventana Propiedades. Para mostrar la ventana
Propiedades, en el men Ver , haga clic en Ventana Propiedades.
Nota: Los controles no responden a eventos mientras est en modo de diseo. Cuando se ejecuta
un cuadro de dilogo para que se muestre la forma en que los usuarios ver, el programa est en
modo de ejecucin. Los cambios que realice en las propiedades de un control en modo de
ejecucin no se conservan cuando se descarga de la memoria el UserForm.
Nota: Controles responden a eventos en modo de ejecucin.

Cmo hacer referencia a los controles de un formulario de usuario


Cmo hacer referencia a los controles mediante programacin depende del tipo de hoja de
mdulo de Visual Basic donde se ejecuta el cdigo. Si el cdigo se ejecuta desde un mdulo
General, la sintaxis es la siguiente:

UserFormName.Controlname.Property = Valor
Por ejemplo, si desea establecer la propiedad Text de un control TextBox denominado TextBox1
en un formulario de usuario denominado UserForm1 al valor de Bob, utilice el cdigo siguiente:

UserForm1.TextBox1.Text="Bob"

Si el cdigo est en un procedimiento que se inicia un evento de un control o el formulario de


usuario, no es necesario que hacer referencia al nombre del objeto UserForm. En su lugar, utilice
el cdigo siguiente:

TextBox1.Text="Bob"

Al adjuntar cdigo a un objeto, el cdigo est asociado a uno de los eventos de ese objeto. En
muchos de los ejemplos de este artculo, adjuntar cdigo al evento Click del objeto
CommandButton .

Controles de etiqueta
Controles de etiqueta se utilizan principalmente para describir otros controles en un formulario
de usuario. El usuario no puede editar un control de etiqueta mientras se ejecuta el formulario
UserForm. Utilice la propiedad Caption para establecer o devolver el texto de un control de
etiqueta . Otras propiedades utilizadas para dar formato a un control Label incluyen la propiedad
Font y la propiedad ForeColor .

Cmo llenar un control ListBox con los valores de una matriz


Para utilizar la instruccin WITH para cambiar las propiedades de un control de etiqueta , siga
estos pasos:
https://support.microsoft.com/eses/kb/829070

8/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.


2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control Label al UserForm.
5. Agregue un control CommandButton en el formulario UserForm.
6. Haga doble clic en el CommandButton control elabierta la ventana de cdigo para el
formulario UserForm.
7. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
WithLabel1
'Setthetextofthelabel.
.Caption="ThisisLabelExample1"
'Automaticallysizethelabelcontrol.
.AutoSize=True
.WordWrap=False
'SetthefontusedbytheLabelcontrol.
.Font.Name="TimesNewRoman"
.Font.Size=14
.Font.Bold=True
'Setthefontcolortoblue.
.ForeColor=RGB(0,0,255)
EndWith
EndSub

8. En el men Ejecutar , haga clic en RunSub/UserForm.


9. Haga clic en el CommandButton.
El texto "Este es ejemplo de etiqueta 1" aparece en el control de etiqueta en negrita Times New
Roman con un tamao de fuente de 14.

Controles TextBox
Controles TextBox se utilizan con frecuencia para obtener datos de un usuario. La propiedad Text
contiene la entrada que se realiza en un control TextBox .

Cmo utilizar un control TextBox para validar una contrasea


https://support.microsoft.com/eses/kb/829070

9/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Si establece la propiedad PasswordChar de un control TextBox , se convierte en un control


"masked edit". Cada carcter que se escribe en el control TextBox se sustituye visualmente por el
carcter que especifique. Para utilizar un control TextBox para validar una contrasea, siga estos
pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control TextBox en el formulario UserForm.
5. En el men Ver , haga clic enPropiedades para mostrar la ventana Propiedades.
6. En la propiedad PasswordChar del control TextBox , escriba *.
Nota: Va a cambiar el valor a un asterisco.
7. Agregue un control CommandButton en el formulario UserForm.
8. Haga doble clic en el CommandButton control elabierta la ventana de cdigo para el
formulario UserForm.
9. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
IfTextBox1.Text<>"userform"Then
MsgBox"PasswordisIncorrect.Pleasereenter."
TextBox1.Text=""
TextBox1.SetFocus
Else
MsgBox"Welcome!"
UnloadMe
EndIf
EndSub

10. En el men Ejecutar , haga clic en RunSub/UserForm.


11. Escriba la contrasea formulario de usuario en el control TextBox .
12. Haga clic en el control CommandButton.
En este ejemplo, la contrasea es "userform". Si escribe una contrasea incorrecta, aparecer un
https://support.microsoft.com/eses/kb/829070

10/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

cuadro de mensaje que indica que la contrasea es incorrecta, se desactiva el control de cuadro
de texto y, a continuacin, vuelva a escribir la contrasea. Al escribir una contrasea correcta,
recibir un mensaje de bienvenida, y se cierra el formulario UserForm.
Para obtener informacin adicional, haga clic en el nmero de artculo siguiente para verlo en
Microsoft Knowledge Base:
213555 XL2000: Ninguna propiedad de validacin de datos para UserForm TextBoxes

Controles CommandButton
Puede utilizar un control CommandButton para iniciar un procedimiento de VBA. El
procedimiento VBA normalmente est asociado al evento Click del control CommandButton .
Para utilizar un control CommandButton que un procedimiento que se ejecuta cuando se
produce el evento Click , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control CommandButton en el formulario UserForm.
5. Agregue un control Label al UserForm.
6. En la ventana cdigo, escriba el cdigo siguiente:

PrivateSubCommandButton1_Click()
red=Int(Rnd*255)
green=Int(Rnd*255)
blue=Int(Rnd*255)
CommandButton1.BackColor=RGB(red,green,blue)
EndSub

7. Haga clic en el cuadro de listay, a continuacin, haga clic en Propiedades.


El color de fondo del control CommandButton1 cambia cada vez que se haga clic en l.
Para obtener informacin adicional acerca del control de botn de comando, haga clic en los
nmeros de artculo siguientes para verlos en Microsoft Knowledge Base:
213572 XL2000: Al hacer clic en botn de cancelacin puede descartar el UserForm
213743 XL2000: Cmo configurar el botn de comando predeterminado en un formulario de
usuario
https://support.microsoft.com/eses/kb/829070

11/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Controles ListBox
El propsito del control ListBox es presentar al usuario una lista de elementos para seleccionarlos.
Puede almacenar la lista de elementos de un control ListBox en una hoja de clculo de Excel. Para
rellenar un control ListBox con un rango de celdas en una hoja de clculo, utilice la propiedad
OrigenDeLaFila (RowSource) . Cuando se utiliza la propiedad SeleccinMltiple (MultiSelect) ,
puede configurar un control ListBox para que acepte varias selecciones.

Cmo obtener el elemento actualmente seleccionado del control ListBox


Utilice la propiedad Value de un control ListBox para devolver el elemento seleccionado
actualmente. Para devolver el elemento actualmente seleccionado en una control ListBox de
seleccin simple, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En a1: a5 de las celdas de Sheet1, escriba los valores que desee usar para rellenar el control
ListBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
5. Agregue un control ListBox en el formulario UserForm.
6. Haga doble clic en el control ListBox control todisplay la ventana de cdigo para el control
ListBox .
7. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de ListBox1 :

PrivateSubListBox1_Click()
MsgBoxListBox1.Value
EndSub

8. En el men Ejecutar , haga clic en RunSub/UserForm.


Al hacer clic en un elemento de la lista, aparece un cuadro de mensaje con el elemento
actualmente seleccionado.

Cmo obtener los elementos seleccionados en un control ListBox de seleccin mltiple


Para determinar los elementos seleccionados en una control ListBox de seleccin mltiple, debe
recorrer todos los elementos de la lista y, a continuacin, consultar la propiedad Selected . Para
devolver los elementos actualmente seleccionados en una control ListBox de seleccin mltiple,
siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
https://support.microsoft.com/eses/kb/829070

12/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

2. En a1: a5 de las celdas de Sheet1, escriba los valores que desee usar para rellenar el control
ListBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
5. Agregue un control ListBox en el formulario UserForm.
6. En el men Ver , haga clic enPropiedades para ver la ventana de propiedades.
7. Escriba los valores que se indican para las siguientes propiedades del control ListBox :

Property
Value

MultiSelect 1frmMultiSelectMulti
RowSource
Sheet1!A1:A8

8. Agregue un control CommandButton en el formulario UserForm.


9. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
formulario UserForm.
10. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

SubCommandButton1_Click()
'LoopthroughtheitemsintheListBox.
Forx=0toListBox1.ListCount1
'Iftheitemisselected...
IfListBox1.Selected(x)=TrueThen
'displaytheSelecteditem.
MsgBoxListBox1.List(x)
EndIf
Nextx
EndSub

11. En el men Ejecutar , haga clic en RunSub/UserForm.


12. Seleccione uno o ms elementos en la lista.
https://support.microsoft.com/eses/kb/829070

13/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

13. Haga clic en CommandButton1.


Despus de hacer clic en CommandButton1, cada elemento seleccionado en el control ListBox
aparece en un cuadro de mensaje independiente. Despus de que aparezcan todos los elementos
seleccionados en un cuadro de mensaje, el formulario de usuario se cierra automticamente.

Control Frame
Para utilizar la propiedad OrigenDeLaFila (RowSource) para llenar un control ListBox desde un
rango de celdas en una hoja de clculo, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En a1: a5 de las celdas de Sheet1, escriba los valores que desee usar para rellenar el control
ListBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
5. Agregue un control ListBox en el formulario UserForm.
6. Agregue un control CommandButton en el formulario UserForm.
7. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
formulario UserForm.
8. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
ListBox1.RowSource="=Sheet1!A1:A5"
EndSub

9. En el men Ejecutar , haga clic en RunSub/UserForm.


Nota: ListBox1 no contiene ningn valor.
10. Haga clic en CommandButton1.
ListBox1 se rellena con los valores de a1: a5 de las celdas de Sheet1.

Cmo llenar un control ListBox con los valores de una matriz


En este ejemplo se muestra cmo rellenar un control ListBox con una variable de matriz. Debe
asignar los valores de la matriz al un elemento control cuadro de lista a la vez. Normalmente, este
proceso requiere el uso de una estructura de bucle, como un de... Siguiente bucle. Para rellenar
un control ListBox con una variable de matriz, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
https://support.microsoft.com/eses/kb/829070

14/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.


3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control ListBox en el formulario UserForm.
5. En el men Insertar , haga clic enmdulo para insertar una hoja de mdulo.
6. En la ventana cdigo, escriba el cdigo siguiente:

SubPopulateListBox()
DimMyArrayAsVariant
DimCtrAsInteger
MyArray=Array("Apples","Oranges","Peaches","Bananas","P
ineapples")

ForCtr=LBound(MyArray)ToUBound(MyArray)
UserForm1.ListBox1.AddItemMyArray(Ctr)
Next

UserForm1.Show
EndSub

7. En el men Herramientas , haga clic enMacros, haga clic en PopulateListBoxy, a


continuacin, haga clic enEjecutar.
El procedimiento PopulateListBox crea una matriz y, a continuacin, agrega los elementos de la
matriz al control ListBox utilizando el mtodo AddItem . A continuacin, aparecer el formulario
UserForm.

Cmo utilizar un rango horizontal de celdas en una hoja de clculo para llenar un control
ListBox
Si establece la propiedad OrigenDeLaFila (RowSource) de un control ListBox en un rango
horizontal de celdas, slo el primer valor aparece en el control ListBox .
Para rellenar un control ListBox desde un rango horizontal de celdas utilizando el mtodo
AddItem , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En las celdas a1: de E1 de Sheet1, escriba los valores que desee usar para rellenar el control
ListBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
https://support.microsoft.com/eses/kb/829070

15/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

5. Agregue un control ListBox en el formulario UserForm.


6. En el men Insertar , haga clic enmdulo para insertar una hoja de mdulo.
7. En la ventana cdigo, escriba el cdigo siguiente:

SubPopulateListWithHorizontalRange()
ForEachxInSheet1.Range("A1:E1")
UserForm1.ListBox1.AddItemx.Value
Next

UserForm1.Show
EndSub

8. En el men Herramientas , haga clic enMacros, haga clic


enPopulateListWithHorizontalRangey, a continuacin, haga clic enEjecutar.
El procedimiento de macro recorre las celdas a1: E5 en Sheet1, agregar los valores a ListBox1 uno
a la vez.
Nota: ListBox1 no est enlazado a las celdas a1: E5 en Sheet1.

Cmo devolver varios valores de un control ListBox enlazado a varias columnas de datos
Puede dar formato a los controles de cuadro de lista para mostrar ms de una columna de datos.
Esto significa que el control ListBox muestra ms de un elemento en cada lnea de la lista. Para
devolver varios valores desde el elemento seleccionado en la lista, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. Escriba los datos siguientes en las celdas que estn onSheet1 indicado:
A1: ao

B1: regin

C1: ventas

A2: 1996

B2: norte

C2: 140

A3: 1996

B3: sur

C3: 210

A4: 1997

B4: norte

C4: 190

A5: 1997

B5: sur

C5: 195

https://support.microsoft.com/eses/kb/829070

16/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.


4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
5. Agregue un control Label al UserForm.
6. Agregue un control ListBox en el formulario UserForm.
7. Haga clic en el cuadro de listay, a continuacin, haga clic enPropiedades.
8. Escriba o seleccione los valores que se indican para las siguientes propiedades del control
ListBox que se enumeran en la tabla siguiente:

PropertyValue

BoundColumn1
ColumnCount3
ColumnHeadsTrue
RowSourceSheet1!A2:A5

9. Haga doble clic en el control ListBox control todisplay la ventana de cdigo para el control
ListBox .
10. En la ventana cdigo, escriba el cdigo siguiente:

PrivateSubListBox1_Change()
DimSourceDataAsRange
DimVal1AsString,Val2AsString,Val3AsString

SetSourceRange=Range(ListBox1.RowSource)

Val1=ListBox1.Value
Val2=SourceRange.Offset(ListBox1.ListIndex,1).Resize(1,
1).Value
Val3=SourceRange.Offset(ListBox1.ListIndex,2).Resize(1,
1).Value

Label1.Caption=Val1&""&Val2&""&Val3
EndSub

11. En el men Ejecutar , haga clic en RunSub/UserForm.

https://support.microsoft.com/eses/kb/829070

17/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Al hacer clic en una entrada en el control ListBox , la etiqueta cambia para mostrar los tres de los
elementos de esa entrada.

Cmo quitar todos los elementos de un control ListBox enlazado a una hoja de clculo
Para quitar todos los elementos de un control ListBox enlazado a una hoja de clculo, desactive el
valor que se almacena en la propiedad OrigenDeLaFila (RowSource) . Para quitar elementos de
un control ListBox enlazado a una hoja de clculo, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En a1: a5 de las celdas de Sheet1, escriba los valores que desee usar para rellenar el control
ListBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
5. Agregue un control ListBox en el formulario UserForm.
6. Haga clic en el control de cuadro de lista y haga clic en Propiedades.
7. En la propiedad OrigenDeLaFila (RowSource) , escriba Hoja1! A1: A5.
8. Agregue un control CommandButton en el formulario UserForm.
9. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
control CommandButton .
10. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
ListBox1.RowSource=""
EndSub

11. En el men Ejecutar , haga clic en RunSub/UserForm.


El control ListBoxque agreg al UserForm se rellena con thevalues que escribi en Sheet1.
12. Haga clic en CommandButton1.
Se quitan todos los elementos de ListBox1.

Cmo quitar todos los elementos de un control de cuadro de lista que no est enlazado a una
hoja de clculo
https://support.microsoft.com/eses/kb/829070

18/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

No hay ningn comando VBA nico que quita todos los elementos de un control ListBox , si la
lista no est enlazada a una hoja de clculo. Para quitar todos los elementos de un control ListBox
que se rellena a partir de una matriz de Visual Basic, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control ListBox en el formulario UserForm.
5. En el men Insertar , haga clic enmdulo para insertar una hoja de mdulo.
6. En la ventana cdigo, escriba el cdigo siguiente:

SubPopulateListBox()
DimMyArrayAsVariant
DimCtrAsInteger
MyArray=Array("Apples","Oranges","Peaches","Bananas","P
ineapples")

ForCtr=LBound(MyArray)ToUBound(MyArray)
UserForm1.ListBox1.AddItemMyArray(Ctr)
Next

UserForm1.Show
EndSub

7. Agregue un control CommandButton en el formulario UserForm.


8. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
control CommandButton .
9. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
Fori=1ToListBox1.ListCount
ListBox1.RemoveItem0
NextI
EndSub

https://support.microsoft.com/eses/kb/829070

19/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

10. En el men Herramientas , haga clic enMacros, haga clic en PopulateListBoxy, a


continuacin, haga clic enEjecutar.
El control ListBox se llena y, a continuacin, aparecer el formulario UserForm.
11. Haga clic en CommandButton1.
Se quitan todos los elementos de ListBox1.
Para obtener informacin adicional acerca del control de cuadro de lista, haga clic en los nmeros
de artculo siguientes para verlos en Microsoft Knowledge Base:
161598 OFF: Cmo agregar datos a un control ComboBox o ListBox en Excel o Word
211446 XL2000: La propiedad TextColumn muestra slo la primera columna
211896 XL2000: Cmo simular la combinacin del control de edicin de la lista para los
formularios de usuario
211899 XL2000: Problemas configuracin de encabezados de columna en el control ListBox
213721 XL2000: Cmo quitar todos los elementos de un control ListBox o ComboBox
213722 XL2000: Cmo utilizar la propiedad TextColumn
213723 XL2000: Cmo devolver valores desde un cuadro de lista que muestra varias
columnas
213746 XL2000: Cmo rellenar el control cuadro de lista con varios rangos
213748 XL2000: Cmo llenar un cuadro de lista basndose en otro cuadro de lista
213752 XL2000: Utiliza el mtodo AddItem provoca un error cuando OrigenDeLaFila
RowSource est enlazado a datos
213756 XL2000: El mtodo RemoveItem con un control ListBox o ComboBox
213759 XL2000: Cmo determinar qu elementos estn seleccionados en un cuadro de lista

Controles ComboBox
Puede utilizar el control ComboBox como un cuadro de lista desplegable, o como un cuadro
combinado, donde puede seleccionar un valor en una lista o escriba un nuevo valor. La propiedad
Style determina si el control ComboBox acta como un cuadro de lista desplegable o un cuadro
combinado.
Nota: Todos los ejemplos de la seccin anterior para el control ListBox pueden aplicarse tambin
al control ComboBox , excepto el ejemplo "Cmo obtener los elementos seleccionados en un
control ListBox de seleccin mltiple".

Cmo agregar un nuevo elemento a la lista si el control ComboBox no est enlazado a una
https://support.microsoft.com/eses/kb/829070

20/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

hoja de clculo
Cuando se escribe un valor que no est en la lista en el control ComboBox , desea agregar el
nuevo valor a la lista. Para agregar el nuevo valor que ha escrito en el control ComboBox , si el
control ComboBox no est enlazado a la hoja de clculo, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control ComboBox al UserForm.
5. En el men Insertar , haga clic enmdulo para insertar una hoja de mdulo.
6. En la ventana cdigo, escriba el cdigo siguiente:

SubPopulateComboBox()
DimMyArrayAsVariant
DimCtrAsInteger
MyArray=Array("Apples","Oranges","Peaches","Bananas",
"Pineapples")

ForCtr=LBound(MyArray)ToUbound(MyArray)
UserForm1.ComboBox1.AddItemMyArray(Ctr)
Next

UserForm1.Show
EndSub

7. Agregue un control CommandButton en el formulario UserForm.


8. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
control CommandButton .
9. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
DimlistvarAsVariant

listvar=ComboBox1.List

https://support.microsoft.com/eses/kb/829070

21/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

OnErrorResumeNext
'Iftheitemisnotfoundinthelist...
IfIsError(WorksheetFunction.Match(ComboBox1.Value,listvar,
0))Then
'addthenewvaluetothelist.
ComboBox1.AddItemComboBox1.Value
EndIf
EndSub

10. En el men Herramientas , haga clic enMacros, haga clic en PopulateListBoxy, a


continuacin, haga clic enEjecutar.
Se rellena el control ComboBox , y, a continuacin, aparecer el formulario UserForm.
11. En el control de cuadro combinado , escriba Mangos o uno de los valores es que no est
en la lista.
12. Haga clic en CommandButton1.
El nuevo valor que escribi ahora aparece al final de la lista.

Cmo agregar un nuevo elemento a la lista si el control cuadro combinado est enlazado a
una hoja de clculo
Cuando un usuario escribe un valor que no est en la lista en el control ComboBox , desea
agregar el nuevo valor a la lista. Para agregar el nuevo valor que escribi en el control de cuadro
combinado a la lista, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En a1: a5 de las celdas de Sheet1, escriba los valores que desee usar para llenar el control
ComboBox .
3. Seleccione a1: a5 de las celdas de Sheet1.
4. En el men Insertar , elijanombrey, a continuacin, haga clic en definir.
En el cuadronombres en el libro , escriba ListRange y, a continuacin, haga clic en
Correcto. Esto crea el nombre definido ListRange. Puede utilizar el nombre definido
ListRange para enlazar la propiedad OrigenDeLaFila (RowSource) del control ComboBox a
la hoja de clculo.
5. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
6. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
7. Agregue un control ComboBox al UserForm.
8. En las Propiedades para ComboBox1, escriba Hoja1! ListRange como la
https://support.microsoft.com/eses/kb/829070

22/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

propiedadOrigenDeLaFila RowSource .
9. Agregue un control CommandButton en el formulario UserForm.
10. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
control CommandButton .
11. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
DimSourceDataAsRange
DimfoundAsObject

SetSourceData=Range("ListRange")
Setfound=Nothing
'Trytofindthevalueontheworksheet.
Setfound=SourceData.Find(ComboBox1.Value)

'Iftheitemisnotfoundinthelist...
IffoundIsNothingThen
'redefineListRange.
SourceData.Resize(SourceData.Rows.Count+1,1).Name="L
istRange"
'Addthenewitemtotheendofthelistontheworkshee
t.
SourceData.Offset(SourceData.Rows.Count,0).Resize(1,
1).Value_
=ComboBox1.Value
'ResetthelistdisplayedintheComboBox.
ComboBox1.RowSource=Range("listrange").Address(externa
l:=True)
EndIf
EndSub

12. En el men Ejecutar , haga clic en RunSub/UserForm.


Aparecer el formulario UserForm de Sheet1.
13. En el control de cuadro combinado , escriba un valor que no est en la lista.
14. Haga clic en CommandButton1.
El nuevo elemento que se ha escrito en el control ComboBox se agrega a la lista y la lista que est
enlazado el control ComboBox se ampla para incluir las celdas a1: a6.
https://support.microsoft.com/eses/kb/829070

23/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Control OptionButton
A veces, puede ser til mostrar la lista de un control ComboBox cuando aparece por primera vez
un formulario de usuario. En el siguiente ejemplo utiliza el evento Activate del objeto UserForm.
Para mostrar la lista de un control ComboBox , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En a1: a5 de las celdas de Sheet1, escriba los valores que desee usar para llenar el control
ComboBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
5. Agregue un control ComboBox al UserForm.
6. En las Propiedades para ComboBox1, escriba Hoja1! A1: A5 como la
propiedadOrigenDeLaFila RowSource .
7. Haga doble clic en el formulario UserForm para mostrar la ventana de theCode para el
formulario UserForm.
8. En la ventana cdigo, escriba el siguiente cdigo para el evento CommandButton Click :

PrivateSubUserForm_Activate()
ComboBox1.DropDown
EndSub

9. En el men Ejecutar , haga clic en RunSub/UserForm.


Aparecer el formulario UserForm de Sheet1 y se puede ver la lista de ComboBox1.

Controles ComboBox
Para mostrar automticamente la lista de un control ComboBox cuando se realiza una seleccin
en otro control ComboBox , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En las celdas a1: a10 Hoja1, escriba los valores que desee usar para llenar el control
ComboBox .
3. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
4. En el men Insertar , haga clic enmdulo.
5. En la ventana de cdigo para el mdulo, escriba el cdigo siguiente:
https://support.microsoft.com/eses/kb/829070

24/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

SubDropDown_ComboBox()
UserForm1.ComboBox2.DropDown
EndSub

6. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.


7. Agregue un control ComboBox al UserForm.
8. En las Propiedades para ComboBox1, escriba Hoja1! A1: A5 como la
propiedadOrigenDeLaFila RowSource .
9. Haga doble clic en el control ComboBox Abrala ventana de cdigo para el control
ComboBox .
10. En la ventana de cdigo para el control de cuadro combinado , escriba el siguiente cdigo
para el evento Click del control ComboBox :

PrivateSubComboBox1_Click()
Application.OnTimeNow,"DropDown_ComboBox"
EndSub

11. Agregue un segundo control ComboBox al UserForm.


12. En las Propiedades para ComboBox2, escriba Hoja1! A6:A10 como la
propiedadOrigenDeLaFila RowSource .
13. En el men Ejecutar , haga clic en RunSub/UserForm.
Al hacer clic en un elemento de la lista ComboBox1 , la lista de ComboBox2 aparece
automticamente.
Para obtener informacin adicional acerca del control de cuadro combinado, haga clic en los
nmeros de artculo siguientes para verlos en Microsoft Knowledge Base:
161598 OFF: Cmo agregar datos a un control ComboBox o ListBox en Excel o Word
211446 XL2000: La propiedad TextColumn muestra slo la primera columna
211899 XL2000: Problemas configuracin de encabezados de columna en el control ListBox
213717 XL2000: Error de tiempo de ejecucin utilizando el mtodo DropDown con un
https://support.microsoft.com/eses/kb/829070

25/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

control ComboBox
213718 XL2000: Cmo mostrar una lista de ComboBox cuando un UserForm se muestra
213721 XL2000: Cmo quitar todos los elementos de un control ListBox o ComboBox
213722 XL2000: Cmo utilizar la propiedad TextColumn
213752 XL2000: Utiliza el mtodo AddItem provoca un error cuando enlazado a datos es
OrigenDeLaFila RowSource
213756 XL2000: El mtodo RemoveItem con un control ListBox o ComboBox

Control Frame
Utilizar un control Frame para agrupar elementos relacionados lgicamente en un UserForm. Con
frecuencia se utilizan controles Frame para agrupar controles OptionButton .

Cmo quitar todos los elementos de un control ListBox enlazado a una hoja de clculo
Utilizar un For Each... Siguiente bucle para acceder a todos los controles de un control Frame ,
siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control Frame en el formulario UserForm.
5. Agregar un control OptionButton para el control Frame .
Repita este paso para agregar dos controles OptionButton ms en el control Frame .
6. Haga doble clic en el control Frame para abrir la ventana de theCode para el control Frame
.
7. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de marco :

PrivateSubFrame1_Click()
DimCtrlAsControl

ForEachCtrlInFrame1.Controls
Ctrl.Enabled=NotCtrl.Enabled
Next
EndSub

https://support.microsoft.com/eses/kb/829070

26/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

8. En el men Ejecutar , haga clic en RunSub/UserForm.


9. En el formulario UserForm, haga clic en el control Frame.
La primera vez que haga clic en el control Frame , todos los controles en el control Frame no
estn disponibles. Si hace clic en el control Frame de nuevo, los controles estn disponibles de
nuevo.

Control OptionButton
Puede utilizar grupos de controles OptionButton para realizar una seleccin entre un grupo de
opciones. Puede utilizar cualquiera de las siguientes tcnicas para controles de botn de opcin
del grupo:
Control Frame
Propiedad GroupName
Nota: El valor es True , el valor S y el valor de indican que se ha seleccionado un control
OptionButton . El valor Off , el valor No y el valor False indican que no est seleccionado un
control OptionButton .

Cmo determinar el control OptionButton seleccionado cuando los controles OptionButton en


un control Frame
Cuando se agrupan controles de controles OptionButton mediante el uso de un control Frame ,
puede determinar el control OptionButton seleccionado recorrer todos los controles en el control
Frame y comprobando la propiedad Value de cada control. Para determinar el control
OptionButton que est seleccionado, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control Frame en el formulario UserForm.
5. Agregar un control OptionButton para el control Frame .
Repita este paso para agregar dos controles OptionButton ms en el control Frame .
6. Agregue un control CommandButton en el formulario UserForm fuera del control de marco
.
7. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
formulario UserForm.
8. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:
https://support.microsoft.com/eses/kb/829070

27/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

PrivateSubCommandButton1_Click()
ForEachxInFrame1.Controls
Ifx.Value=TrueThen
MsgBoxx.Caption
EndIf
Next
EndSub

9. En el men Ejecutar , haga clic en RunSub/UserForm.


10. En el formulario de usuario, haga clic en un control OptionButton y, a continuacin, haga
clic enCommandButton1.
Aparecer un mensaje que contiene el ttulo del control OptionButton actualmente seleccionado.

Cmo determinar el control OptionButton que est seleccionado


El propsito del ejemplo siguiente es determinar el control OptionButton que est seleccionado
en el grupo 1. Para crear un UserForm que tiene dos grupos de controles OptionButton , siga
estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control Frame en el formulario UserForm.
5. Agregar un control OptionButton en el control Frame .
Repita este paso para agregar dos controles OptionButton ms en el control Frame .
6. Para cada control OptionButton , escriba Grupo1 en la propiedad GroupName .
7. Repita los pasos 4 y 5 para crear un segundo control de marco que contiene tres controles
OptionButton .
8. Para cada control OptionButton en el segundo control de marco , escriba Grupo2 en la
propiedad GroupName .
9. Agregue un control CommandButton en el formulario UserForm fuera de los controles de
marco .
10. Haga doble clic en el CommandButton control todisplay la ventana de cdigo para el
formulario UserForm.
https://support.microsoft.com/eses/kb/829070

28/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

11. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
DimxAsControl

'LoopthroughALLthecontrolsontheUserForm.
ForEachxInMe.Controls
'Checktoseeif"Option"isintheNameofeachcontro
l.
IfInStr(x.Name,"Option")Then
'CheckGroupname.
Ifx.GroupName="Group1"Then
'CheckthestatusoftheOptionButton.
Ifx.Value=TrueThen
MsgBoxx.Caption
ExitFor
EndIf
EndIf
EndIf
Next
EndSub

12. En el men Ejecutar , haga clic en RunSub/UserForm.


13. En el formulario UserForm, haga clic en un control OptionButton en grupo1 y, a
continuacin, haga clic enCommandButton1.
Aparecer un mensaje que contiene el ttulo del control OptionButton que est seleccionado
actualmente.
Para obtener informacin adicional acerca de los controles OptionButton, haga clic en el nmero
de artculo siguiente para verlo en Microsoft Knowledge Base:
213724 XL2000: Problemas al utilizar la propiedad TripleState para botn de opcin

Control de casilla de verificacin


Puede utilizar un control de casilla de verificacin para indicar un valor true o false. Un control de
casilla de verificacin que aparece con una marca de verificacin indica un valor de True. Una
casilla de verificacin que aparece con ninguna marca de verificacin indica un valor de False. Si
el valor de la propiedad TripleState es True, un control CheckBox tambin puede tener un valor
Null. Aparece un control de casilla de verificacin que tiene un valor Null que no est disponible.
Nota: El valor es True , el valor S y el valor de indican que un control de casilla de verificacin
https://support.microsoft.com/eses/kb/829070

29/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

est activado. El valor Off , el valor No y el valor False indican que un control de casilla de
verificacin est desactivado.

Control de casilla de verificacin


Para utilizar la propiedad Value para devolver el valor actual de un control de casilla de
verificacin , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control CheckBox al UserForm.
5. En la lista de propiedades de CheckBox1, seleccione True como la propiedad TripleEstado
(TripleState) .
6. Haga doble clic en la casilla de verificacin control todisplay la ventana de cdigo para el
control de casilla de verificacin .
7. En la ventana cdigo, escriba el siguiente cdigo en el evento Change de CheckBox1 :

PrivateSubCheckBox1_Change()
SelectCaseCheckBox1.Value
CaseTrue
CheckBox1.Caption="True"
CaseFalse
CheckBox1.Caption="False"
CaseElse
CheckBox1.Caption="Null"
EndSelect
EndSub

8. En el men Ejecutar , haga clic en RunSub/UserForm.


Al hacer clic en el control de casilla de verificacin , el ttulo del control CheckBox cambia para
reflejar el valor actual.

Control ToggleButton
Un control ToggleButton tiene la misma apariencia que un control CommandButton hasta que
haga clic en l. Al hacer clic en un control ToggleButton , parece estar presionado o hacia abajo.
La propiedad Value de un control ToggleButton es True cuando el botn est seleccionado y
False cuando no se selecciona el botn. Si el valor de la propiedad TripleState es True, un control
https://support.microsoft.com/eses/kb/829070

30/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

ToggleButton tambin puede tener un valor Null. Aparece un control ToggleButton que tiene un
valor null que no est disponible.
Nota: El valor es True , el valor S y el valor de indican que un control ToggleButton est activado.
El valor Off , el valor No y el valor False indican que no est seleccionado un control
ToggleButton .

Cmo obtener el valor de un control ToggleButton


Para obtener el valor de un control ToggleButton , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control ToggleButton en el formulario UserForm.
5. Agregue un control Label al UserForm.
6. Haga doble clic en el control ToggleButton control elabierta la ventana de cdigo para el
control ToggleButton .
7. En la ventana cdigo, escriba el siguiente cdigo para el evento ToggleButton1Click :

PrivateSubToggleButton1_Click()
IfToggleButton1.Value=TrueThen
'SetUserFormbackgroundtoRed.
Me.BackColor=RGB(255,0,0)
Else
'SetUserFormbackgroundtoBlue.
Me.BackColor=RGB(0,0,255)
EndIf
EndSub

8. En el men Ejecutar , haga clic en RunSub/UserForm.


Al hacer clic en el control ToggleButton , el color de fondo de los cambios de UserForm.

Cmo cargar una imagen en un control de imagen


Este ejemplo utiliza el evento MouseUp para establecer una variable y llama al procedimiento
ExclusiveToggleButtons . El procedimiento ExclusiveToggleButtons determina el control
ToggleButton que est seleccionado y, a continuacin, cancela las dems. Para crear un grupo de
controles ToggleButton mutuamente exclusivos, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
https://support.microsoft.com/eses/kb/829070

31/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.


3. En el men Insertar , haga clic enmdulo.
4. En la ventana de cdigo para el mdulo, escriba el cdigo siguiente:

'VariablethatholdsthenameoftheToggleButtonthatwasclick
ed.
PublicclickedAsString
SubExclusiveToggleButtons()
DimtoggleAsControl
'LoopthroughalltheToggleButtonsonFrame1.
ForEachtoggleInUserForm1.Frame1.Controls
'IfNameofToggleButtonmatchesnameofToggleButton
'thatwasclicked...
Iftoggle.Name=clickedThen
'...selectthebutton.
toggle.Value=True
Else
'...otherwisecleartheselectionofthebutton.
toggle.Value=False
EndIf
Next
EndSub

5. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.


6. Agregue un control Frame en el formulario UserForm.
7. Agregar un control ToggleButton en el control Frame .
Repita este paso para agregar dos controles ToggleButton ms en el control Frame .
8. Haga doble clic en el control Frame para visualizar ventana de cdigo para el formulario
UserForm.
9. En la ventana de cdigo para el mdulo, escriba el siguiente procedimiento el evento
ToggleButton MouseUp :

PrivateSubToggleButton1_MouseUp(ByValButtonAsInteger,_
ByValShiftAsInteger,ByValXAsSingle,ByValY
https://support.microsoft.com/eses/kb/829070

32/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

AsSingle)
clicked=ToggleButton1.Name
Application.OnTimeNow,"ExclusiveToggleButtons"
EndSub
PrivateSubToggleButton2_MouseUp(ByValButtonAsInteger,_
ByValShiftAsInteger,ByValXAsSingle,ByValY
AsSingle)
clicked=ToggleButton2.Name
Application.OnTimeNow,"ExclusiveToggleButtons"
EndSub
PrivateSubToggleButton3_MouseUp(ByValButtonAsInteger,_
ByValShiftAsInteger,ByValXAsSingle,ByValY
AsSingle)
clicked=ToggleButton3.Name
Application.OnTimeNow,"ExclusiveToggleButtons"
EndSub

10. En el men Ejecutar , haga clic en RunSub/UserForm.


Al hacer clic en un control ToggleButton , se cancela el control ToggleButton seleccionado
anteriormente.

Control TabStrip
Utilice un control TabStrip para ver diferentes conjuntos de informacin para un conjunto de
controles.

Cmo controlar mediante programacin de un control TabStrip


Para cambiar la propiedad BackColor de un control de imagen basada en la ficha seleccionada,
siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en Editor de Visual
Basic.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control TabStrip en el formulario UserForm.

https://support.microsoft.com/eses/kb/829070

33/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

5. Agregar un control de imagen que cubre la base del control TabStrip , pero no cubre las
fichas.
6. En el panel Propiedades Image1, escribaDE & H000000FF & en la propiedad BackColor .
7. Haga doble clic en el control TabStrip Abrala ventana de cdigo para el control TabStrip .
8. En la ventana cdigo, escriba el siguiente cdigo en el evento Change TabStrip1 :

PrivateSubTabStrip1_Change()
DimiAsInteger
i=TabStrip1.SelectedItem.Index
SelectCasei
Case0
'IfTab1isselected,changethecolorofImagecont
roltoRed.
Image1.BackColor=RGB(255,0,0)
Case1
'IfTab2isselected,changethecolorofImagecont
roltoGreen.
Image1.BackColor=RGB(0,255,0)
EndSelect
EndSub

9. En el men Ejecutar , haga clic en RunSub/UserForm.


El color del control de imagen vara dependiendo de la pgina en el control TabStrip que est
activo.
Para obtener informacin adicional acerca del control TabStrip, haga clic en el nmero de artculo
siguiente para verlo en Microsoft Knowledge Base:
213254 XL2000: Cmo utilizar el control TabStrip en un formulario de usuario

Control multiPage
Utilizar un control MultiPage para trabajar con mucha informacin que pueda clasificarse en
varias categoras. Un control MultiPage se compone de uno o ms pgina objetos que cada uno
contiene un conjunto de controles diferente. Puede establecer la pgina activa mediante
programacin estableciendo la propiedad Value del control MultiPage .

Cmo crear una interfaz de asistente mediante el uso de un control MultiPage


Para agregar un control MultiPage y controlarlo mediante una macro, siga estos pasos:
https://support.microsoft.com/eses/kb/829070

34/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.


2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregar un control MultiPage en el formulario UserForm.
5. Agregue un control Label a la pgina 1 en el control MultiPage .
6. Agregue un control TextBox en Page1 en el control MultiPage .
7. En el control MultiPage , haga clic en la pgina 2y, a continuacin, repita los pasos 5 6 para
agregar un control Label y un control TextBox .
8. Haga doble clic en el control MultiPage Abrala ventana de cdigo para el control
MultiPage .
9. En la ventana cdigo, escriba el siguiente cdigo en el evento Change MultiPage1 :

PrivateSubMultiPage1_Change()
SelectCaseMultiPage1.Value
'IfactivatingPage1...
Case0
Label1.Caption=TextBox2.Text
TextBox1.Text=""
'IfactivatingPage2...
Case1
Label2.Caption=TextBox1.Text
TextBox2.Text=""
EndSelect
EndSub

10. En la ventana cdigo, escriba el siguiente cdigo en el evento UserForm Initialize :

PrivateSubUserForm_Initialize()
'ForcePage1tobeactivewhenUserFormisdisplayed.
MultiPage1.Value=0
Label1.Caption=""
EndSub

https://support.microsoft.com/eses/kb/829070

35/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

11. En el men Ejecutar , haga clic en RunSub/UserForm.


En el control TextBox en Page1, escriba Prueba. Cuando youclick la ficha Pgina2 ,
TextBox2 est desactivada y el ttulo de Label2 cambia a la entrada que realiz en TextBox1
en Pgina1 "prueba".

Cmo crear una interfaz de asistente mediante el uso de un control MultiPage


Cuando una tarea requiere varios pasos incrementales, una interfaz de asistente puede ser muy
eficaz. Puede utilizar el control MultiPage para crear una interfaz de asistente en lugar de utilizar
varios formularios de usuario. En este ejemplo se manipula un control MultiPage que tiene tres
pginas. Un procedimiento asociado al evento Initialize del objeto UserForm deshabilita Page2 y
pgina 3 y fuerza Page1 del control MultiPage est activo.
Nota: Al indizar las pginas de un control MultiPage mediante el uso de la coleccin Pages , la
primera pgina de la coleccin es cero de la pgina. Este procedimiento tambin se establece el
ttulo de los controles CommandButton y deshabilita el < Atrs botn.
Nota: El procedimiento que est asignado al evento Click de CommandButton1 controla la
funcionalidad de la < Atrs botn. El procedimiento que est asignado al evento Click de
CommandButton2 controla la funcionalidad de la Siguiente > botn. Para crear una interfaz de
asistente mediante el uso de un control MultiPage , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregar un control MultiPage en el formulario UserForm.
5. Haga clic en la ficha de la pgina 1 y, a continuacin, haga clic enNueva pgina para
agregar la pgina 3 para el control MultiPage .
6. Agregue un control CommandButton en el formulario UserForm que no est en el control
MultiPage .
Repita este paso para agregar un segundo control CommandButton en el formulario
UserForm.
7. Haga doble clic en el formulario UserForm para abrir el Codewindow para el formulario
UserForm.
8. En la ventana cdigo, escriba el siguiente cdigo en el evento UserForm Initialize :

PrivateSubUserForm_Initialize()
WithMultiPage1
'Thenext2linesdisablePage2&Page3.
.Pages(1).Enabled=False
https://support.microsoft.com/eses/kb/829070

36/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

.Pages(2).Enabled=False
'MakePage1theactivepage.
.Value=0
EndWith

'SetthecaptionontheCommandButtons.
CommandButton1.Caption="<Back"
CommandButton1.Enabled=False
CommandButton2.Caption="Next>"
EndSub
'Procedureforthe"<Back"button
PrivateSubCommandButton1_Click()
SelectCaseMultiPage1.Value
Case1'IfPage2isacti
ve...
WithMultiPage1
.Pages(0).Enabled=True'EnablePage1.
.Value=MultiPage1.Value1'Moveback1pag
e.
.Pages(1).Enabled=False'DisablePage2.
EndWith
CommandButton1.Enabled=False'DisableBackbut
ton.

Case2'IfPage3isacti
ve...
WithMultiPage1
.Pages(1).Enabled=True'EnablePage2.
.Value=MultiPage1.Value1'Moveback1pag
e.
.Pages(2).Enabled=False'DisablePage3.
CommandButton2.Caption="Next>"
EndWith
EndSelect
EndSub
'Procedureforthe"Next>"button
PrivateSubCommandButton2_Click()
SelectCaseMultiPage1.Value
Case0'IfPage1isact
ive...
WithMultiPage1
.Value=MultiPage1.Value+1'Moveforward1
page.
.Pages(1).Enabled=True'EnablePage2.
.Pages(0).Enabled=False'DisablePage1.
EndWith
https://support.microsoft.com/eses/kb/829070

37/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

CommandButton1.Enabled=True'EnableBackbut
ton.

Case1'IfPage2isact
ive...
WithMultiPage1
.Value=MultiPage1.Value+1'Moveforward1
page.
.Pages(2).Enabled=True'EnablePage3.
.Pages(1).Enabled=False'DisablePage2.
EndWith
CommandButton2.Caption="Finish"'ChangeNextbut
tontoFinish.

Case2'IfPage3isact
ive...
MsgBox"Finished!"'UserisFinishe
d.
UnloadMe'UnloadtheUser
Form.
EndSelect
EndSub

9. En el men Ejecutar , haga clic en RunSub/UserForm.


Al hacer clic en Siguiente >, Page2 est activado y el < Atrs botn est disponible. Al hacer clic
en Siguiente > una segunda vez, se activa la pgina 3 y el ttulo de CommandButton2 cambia a
"Finalizar".

Control ScrollBar
Puede utilizar un control de barra de desplazamiento cuando desea cambiar el valor mostrado
por el otro control, como un control de etiqueta .

Cmo cambiar un control Label que se basa en el valor de un control de barra de


desplazamiento
Para cambiar la propiedad Caption de un control Label a la configuracin actual de la propiedad
Value de un control de barra de desplazamiento , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control de barra de desplazamiento en el formulario UserForm.

https://support.microsoft.com/eses/kb/829070

38/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

5. Agregue un control Label al UserForm.


6. Haga doble clic en el control de barra de desplazamiento a la ventana de cdigo Abrala
para el control de barra de desplazamiento .
7. En la ventana cdigo, escriba el siguiente cdigo en el evento Change ScrollBar1 :

PrivateSubScrollBar1_Change()
Label1.Caption=ScrollBar1.Value
EndSub

8. En el men Ejecutar , haga clic en RunSub/UserForm.


Al desplazarse con el control de barra de desplazamiento , Label1 se actualiza con el valor actual
del control de barra de desplazamiento .

Control SpinButton
Con frecuencia se utiliza un control SpinButton , como un control de barra de desplazamiento
para aumentar o reducir el valor de otro control, como un control de etiqueta . La propiedad
SmallChange determina cunto el valor de un control SpinButton cambia cuando se hace clic.

Cmo agregar un control SpinButton que incrementa o disminuye una fecha en la que se
almacena en un control TextBox
Para agregar un control SpinButton que incrementa o disminuye una fecha en la que se almacena
en un control TextBox , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregar un control SpinButton para el formulario UserForm.
5. Agregue un control TextBox en el formulario UserForm.
6. Haga doble clic en el control SpinButton control elabierta la ventana de cdigo para el
control SpinButton .
7. En la ventana cdigo, escriba el siguiente cdigo para el evento SpinUp SpinButton1 :

PrivateSubSpinButton1_SpinUp()
https://support.microsoft.com/eses/kb/829070

39/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

TextBox1.Text=DateValue(TextBox1.Text)+1
EndSub

8. En la ventana cdigo, escriba el siguiente cdigo para el evento SpinDown SpinButton1 :

PrivateSubSpinButton1_SpinDown()
TextBox1.Text=DateValue(TextBox1.Text)1
EndSub

9. En la ventana cdigo, escriba el siguiente cdigo en el evento UserForm Initialize :

PrivateSubUserForm_Initialize()
TextBox1.Text=Date
EndSub

10. En el men Ejecutar , haga clic en RunSub/UserForm.


Cuando aparezca el formulario de usuario, la fecha actual aparece en TextBox1. Al hacer clic en el
control SpinButton , la fecha se incrementa o reduce en un da.
En este ejemplo, si cambia la propiedad SmallChange de SpinButton1, no afecta el nmero de
das que la entrada en TextBox1 cambia al hacer clic en SpinButton1. El nmero de das se
determina nicamente por el procedimiento que se ha vinculado a los eventos de SpinButton1
SpinDown y SpinUp .
Para obtener informacin adicional acerca del control SpinButton, haga clic en el nmero de
artculo siguiente para verlo en Microsoft Knowledge Base:
213224 XL2000: ejemplo de Visual Basic para utilizar un botn de nmero con una fecha

Control RefEdit
El control RefEdit imita el comportamiento de los cuadros de referencia que estn integradas en
Excel. Puede utilizar la propiedad Value para obtener la direccin de la celda actual que se
almacenan en un control RefEdit .

https://support.microsoft.com/eses/kb/829070

40/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Cmo rellenar un rango de celdas basndose en el rango seleccionado con el control RefEdit
Para utilizar el control RefEdit para rellenar las celdas, siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control RefEdit en el formulario UserForm.
5. Agregue un control CommandButton en el formulario UserForm.
6. Haga doble clic en el CommandButton control elabierta la ventana de cdigo para el
control CommandButton .
7. En la ventana cdigo, escriba el siguiente cdigo para el evento Click de CommandButton1
:

PrivateSubCommandButton1_Click()
DimMyRangeAsString
MyRange=RefEdit1.Value
Range(MyRange).Value="test"
UnloadMe
EndSub

8. En el men Ejecutar , haga clic en RunSub/UserForm.


El UserFormappears.
9. Haga clic en el botn en el control RefEdit .
Observe que se contrae el UserForm.
10. Seleccione un rango de celdas, como a1: a5 y, a continuacin, haga clic en Examinar en el
control RefEdit para expandir el UserForm.
11. Haga clic en CommandButton1.
Cierra el formulario UserForm y las celdas que seleccion ahora contienen la palabra "prueba".
Para obtener informacin adicional acerca del control RefEdit, haga clic en el nmero de artculo
siguiente para verlo en Microsoft Knowledge Base:
213776 XL2000: Cmo utilizar el control RefEdit con un formulario de usuario
https://support.microsoft.com/eses/kb/829070

41/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Control de imagen
Es el propsito del control Image mostrar una imagen en un formulario de usuario. Para asignar
una imagen a un control de imagen en tiempo de ejecucin, utilice la funcin LoadPicture .

Cmo cargar una imagen en un control de imagen


Para insertar un control de imagen que le pide que seleccione una imagen para cargar al hacer
clic en el control de imagen , siga estos pasos:
1. Inicie Excel y, a continuacin, abra un nuevo libro en blanco.
2. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
3. En el men Insertar , haga clic enUserForm para insertar un UserForm en el libro.
4. Agregue un control de imagen en el formulario UserForm.
5. Haga doble clic en el control de imagen para abrir la ventana de theCode para el control de
imagen .
6. En la ventana cdigo, escriba el siguiente cdigo para el evento Click Image1 :

PrivateSubImage1_Click()
DimfnameAsString

'DisplaytheOpendialogbox.
fname=Application.GetOpenFilename(filefilter:=_
"BitmapFiles(*.bmp),*.bmp",Title:="SelectImageTo
Open")

'IfyoudidnotclickCancel...
Iffname<>"False"Then
'LoadthebitmapintotheImagecontrol.
Image1.Picture=LoadPicture(fname)
'RefreshtheUserForm.
Me.Repaint
EndIf
EndSub

7. En el men Ejecutar , haga clic en RunSub/UserForm.


Aparecer el formulario UserForm.

https://support.microsoft.com/eses/kb/829070

42/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

8. Haga clic en el control de imagen .


Cuando haga clic en el control de imagen , el boxappears de dilogo Seleccionar imagen
de apertura , y, a continuacin, puede seleccionar un archivo de mapa de bits para insertar
en thecontrol.
Para obtener informacin adicional acerca del control de imagen, haga clic en el nmero de
artculo siguiente para verlo en Microsoft Knowledge Base:
213732 XL2000: Mediante la funcin LoadPicture con un control de imagen

Informacin adicional
El Examinador de objetos
Una lista completa de todas las propiedades y mtodos para un comando especfico est
disponible en el Examinador de objetos. Para encontrar esta informacin en Excel, siga estos
pasos:
1. En el men Herramientas , elijaMacroy, a continuacin, haga clic en BasicEditor Visual.
2. En el men Ver , haga clic en ObjectBrowser.
3. En el cuadro Buscar texto , escriba el nombre del control que desee y, a continuacin, haga
clic en Buscar.
Para obtener ms informacin acerca de cmo utilizar el Examinador de objetos en el Editor de
Visual Basic, haga clic en Ayuda de Microsoft Visual Basic en el men Ayuda , escriba
Examinador de objetos en el Ayudante de Office o el Asistente para Ayuda y, a continuacin, haga
clic en Buscar para ver el tema.
Para obtener informacin adicional acerca de cmo instalar la Ayuda de Microsoft Excel en el
equipo, haga clic en el nmero de artculo siguiente para verlo en Microsoft Knowledge Base:
231946 OFF2000: Cmo agregar o quitar un nico programa de Office o un componente

Atencin: este artculo ha sido traducido con Traducin automtica

Propiedades
Id. de artculo: 829070 ltima revisin: 07/25/2015 11:02:00 Revisin: 22.0
La informacin de este artculo se refiere a:
Microsoft Office Excel 2003
https://support.microsoft.com/eses/kb/829070

43/44

3/8/2015

CmoutilizarVisualBasicparaAplicaciones(VBA)paracambiarlosformulariosdeusuarioenExcel

Microsoft Excel 2010


Microsoft Office Excel 2007
Palabras clave:
kbprogramming kbfunctions kbhowtomaster kbhowto kbmt KB829070 KbMtes

Soporte tcnico

Seguridad

Ponerse en contacto con nosotros

Espaol Espaa, alfabetizacin internacional

Trminos de uso

Privacidad y cookies

https://support.microsoft.com/eses/kb/829070

Marcas comerciales

2015 Microsoft

44/44

También podría gustarte