Вы находитесь на странице: 1из 53

26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Cómo utilizar Visual Basic para Aplicaciones


(VBA) para cambiar UserForms en Excel
Se aplica a: Microsoft Office Excel 2003, Microsoft Excel 2010, Microsoft Office Excel
2007, Mostrar más

Resumen

Este artículo describe cómo cambiar UserForms en Microsoft Excel mediante


programación. Incluye ejemplos y macros de Microsoft Visual Basic para
Aplicaciones (VBA) que muestran cómo aprovechar las capacidades de los
UserForms y cómo emplear los controles ActiveX™ disponibles para UserForms.

Una introducción a los principios básicos de los UserForms describe cómo


mostrarlos, cómo ocultarlos temporalmente y cómo descartarlos. También se
muestra cómo utilizar los eventos más comunes asociados a los UserForms:
Initialize, Click y Terminate. Uno o más de los siguientes ejemplos demuestran
cómo utilizar cada uno de los siguientes controles ActiveX™ en un UserForm:

Control Label

Control TextBox

Control CommandButton

Control ListBox

Control ComboBox

Control Frame

Control OptionButton

Control CheckBox

Control ToggleButton

Control TabStrip

Control MultiPage

Control ScrollBar
https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 1/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Control SpinButton

Control RefEdit

Control Image

INTRODUCCIÓN

Este artículo describe cómo utilizar VBA para realizar cambios en UserForms en Excel.

Más información

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente,


sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las
garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En este
artículo se da por supuesto que ya conoce el lenguaje de programación que se
muestra, así como las herramientas empleadas para crear y depurar procedimientos.
Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de
un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer
mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades
específicas.

Fundamentos de los UserForm

Cómo mostrar un UserForm

La sintaxis empleada para mostrar un UserForm mediante programación es la


siguiente:
NombreUserForm.Show
Para mostrar un UserForm de nombre UserForm1, emplee el siguiente código:

UserForm1.Show

Puede cargar un UserForm en memoria sin llegar a mostrarlo. Un UserForm complejo


puede tardar varios segundos en aparecer. Como es posible precargar un UserForm
en memoria, puede decidir cuándo incurrir en esta sobrecarga. Para cargar
UserForm1 en memoria sin mostrarlo, emplee el siguiente código: 

Load UserForm1

Para mostrar el UserForm, debe utilizar el método Show explicado anteriormente.

Cómo ocultar temporalmente un UserForm

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 2/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Si quiere ocultar temporalmente un UserForm, emplee el método Hide. Puede querer


ocultar un UserForm si su aplicación requiere desplazarse entre varios de ellos. Para
ocultar un UserForm, emplee el siguiente código:

UserForm1.Hide

Para obtener información adicional al respecto, haga clic en el número de artículo


siguiente para verlo en Microsoft Knowledge Base:
213747 XL2000: Cómo desplazarse entre UserForms personalizados con botones
de comando

Cómo eliminar un UserForm de la memoria

 Para eliminar un UserForm de la memoria, emplee la declaración Unload. Para


descargar un UserForm de nombre UserForm1, emplee el siguiente código:

Unload UserForm1

Si descarga un UserForm en un procedimiento de evento asociado a un UserForm o


a un control de un UserForm (por ejemplo, si hace clic en un
control CommandButton), puede emplear la palabra clave "Me" en vez del nombre
del UserForm. Para utilizar la palabra clave "Me" con el fin de descargar un UserForm,
emplee el siguiente código:

Unload Me

Cómo utilizar eventos de UserForms

Los UserForms admiten muchos eventos predefinidos a los que puede adjuntar
procedimientos de VBA. Cuando el evento se produce, se ejecuta el procedimiento
adjunto al mismo. Una sola acción realizada por un usuario puede iniciar múltiples
eventos. Entre los eventos utilizados con más frecuencia para un UserForm están
Initialize, Click y Terminate.

Nota: de un módulo de Visual Basic que contiene un procedimiento de evento puede


decirse que es un módulo "detrás" del UserForm. Un módulo que contiene
procedimientos de evento no es visible en la colección Módulos de la ventana del
Explorador de proyectos de Microsoft, en el Editor de Visual Basic. Debe hacer doble
clic en el cuerpo de un UserForm para ver su módulo de código.

Cómo capturar eventos de UserForms

Para capturar eventos de Userforms, siga estos pasos:


1. Cree un nuevo libro en Excel.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 3/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

4. Haga doble clic en el UserForm para mostrar su ventana Código.

5. En el módulo, escriba el código siguiente.

Private Sub UserForm_Click()

Me.Height = Int(Rnd * 500)


Me.Width = Int(Rnd * 750)

End Sub

Private Sub UserForm_Initialize()

Me.Caption = "Events Events Events!"


Me.BackColor = RGB(10, 25, 100)

End Sub

Private Sub UserForm_Resize()

msg = "Width: " & Me.Width & Chr(10) & "Height: " & Me.Heigh
MsgBox prompt:=msg, Title:="Resize Event"

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As

msg = "Now Unloading " & Me.Caption


MsgBox prompt:=msg, Title:="QueryClose Event"

End Sub

Private Sub UserForm_Terminate()

msg = "Now Unloading " & Me.Caption


MsgBox prompt:=msg, Title:="Terminate Event"

End Sub

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

Cuando el UserForm se carga por primera vez, la macro utiliza el evento Initialize
para cambiar la propiedad Caption del UserForm a "Events Events Events!" y la
propiedad BackColor a azul oscuro.

Cuando hace clic en el UserForm, inicia el evento Click. El evento Click cambia el
tamaño del UserForm. Como ha creado un procedimiento para el evento Resize, al
hacer clic en el UserForm obtiene dos cuadros de mensaje. El evento Resize se
produce dos veces porque el código tras el evento Click cambia tanto la propiedad
Width como la propiedad Height del UserForm.

Al cerrar el UserForm se inicia el evento QueryClose. El evento QueryClose muestra


un cuadro de mensaje que contiene el título que dio al UserForm en el código del
evento Initialize. Puede emplear el evento QueryClose cuando quiera realizar un

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 4/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

conjunto determinado de acciones en caso de que el usuario cierre el UserForm.

A continuación, el evento Terminate genera un cuadro de mensaje que indica que el


título del UserForm es UserForm1. El evento Terminate se produce una vez el
UserForm se elimina de la memoria y su título vuelve a su estado original.

Cómo impedir que un UserForm se cierre empleando el botón Close

Cuando ejecuta un UserForm, se agrega un botón Close en la esquina superior


derecha de su ventana. Si quiere impedir que el UserForm se cierre empleando este
botón Close, debe capturar el evento QueryClose.

El evento QueryClose se produce justo antes de que el UserForm se descargue de la


memoria. Emplee el argumento CloseMode del evento QueryClose para determinar
cómo se cierra el UserForm. El valor vbFormControlMenu del argumento CloseMode
indica que se ha hecho clic en el botón Close. Para mantener activo el UserForm,
establezca el argumento Cancel del evento QueryClose en Verdadero. Para emplear
el evento QueryClose con el fin de impedir que se cierre un UserForm al utilizar el
botón Close, siga estos pasos:
1. Cree un nuevo libro en Excel.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control CommandButton al UserForm.

5. Haga doble clic en el UserForm para mostrar su ventana Código.

6. En la ventana Código, escriba el código siguiente:

Private Sub CommandButton1_Click()

Unload Me

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As

IF CloseMode = vbFormControlMenu Then


Cancel = True
Me.Caption = "Click the CommandButton to close Me!"
End If

End Sub

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

El UserForm no se cierra cuando hace clic en el


botón Close. Deberá hacer clic en el
control CommandButton para cerrar el UserForm.
https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 5/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Para obtener más información, haga clic en los números de artículo siguientes para
verlos en Microsoft Knowledge Base:
207714 XL2000: Errores en tiempo de ejecución utilizando la colección de
UserForms

211527 XL2000: No se puede arrastrar un control de UserForm a una hoja de


cálculo

211868 XL2000: Error al ejecutar una macro que inserta un control en un


UserForm

213582 XL2000: Se producen problemas cuando utiliza una macro para agregar
un control a un UserForm

213583 XL2000: No es posible mostrar UserForms en otros proyectos

213736 XL2000: Cómo determinar la tecla presionada junto al botón del mouse

213744 XL2000: Cómo ocultar temporalmente un UserForm

213747 XL2000: Cómo desplazarse entre UserForms personalizados con botones


de comando

213749 XL2000: Cómo utilizar un UserForm para introducir datos

213768 XL2000: Cómo cambiar de tamaño dinámicamente un UserForm

213774 XL2000: Cómo crear una pantalla de inicio con un UserForm

Código VBA

Excel incluye quince controles distintos que puede utilizar en UserForms. Esta sección
contiene varios ejemplos que utilizan estos controles mediante programación. 

Nota: el código VBA incluido en este artículo no contiene ejemplos que afecten a
todas las propiedades y eventos de los controles. Si lo necesita, puede utilizar la
ventana Propiedades para ver una lista de las propiedades disponibles para cada
control. Para ver una lista de propiedades, en el
menú Ver haga clic en Ventana Propiedades.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 6/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Cómo utilizar el modo de diseño para editar controles

Cuando utiliza el Editor de Visual Basic para diseñar un cuadro de diálogo, está
utilizando el modo de diseño. En este modo puede editar controles y cambiar las
propiedades de un control de UserForm desde la ventana Propiedades. Para mostrar
la ventana Propiedades, en el menú Ver, haga clic en
Ventana Propiedades.

Nota: los controles no responden a los eventos mientras está en el modo de diseño.
Cuando ejecuta un cuadro de diálogo para comprobar cómo lo ven los usuarios, el
programa está en modo de ejecución. Los cambios que realiza en las propiedades de
un control en modo de ejecución no se conservan cuando el UserForm se descarga
de la memoria.

Nota: los controles responden a los eventos en el modo de ejecución.

Cómo referirse a los controles en un UserForm

La forma de referirse a los controles mediante programación depende del tipo de


hoja de módulo de Visual Basic donde ejecuta el código. Si el código se ejecuta
desde un módulo General, la sintaxis es la siguiente: 
NombreUserForm.NombreControl.Propiedad = Valor
Por ejemplo, si quiere establecer la propiedad Text de un control TextBox llamado
TextBox1 en un UserForm llamado UserForm1 en el valor Bob, emplee el siguiente
código:

UserForm1.TextBox1.Text = "Bob"

Si el código está en un procedimiento iniciado por un evento de un control o por el


UserForm, no es necesario referirse al nombre del UserForm. Utilice el siguiente
código: 

TextBox1.Text = "Bob"

Cuando adjunta código a un objeto, el código se adjunta a uno de los eventos de


dicho objeto. En muchos de los ejemplos de este artículo, adjunta código al
evento Click del objeto CommandButton.

Controles Label

Los controles Label se utilizan principalmente para describir otros controles en un


UserForm. El usuario no puede editar un control Label mientras el UserForm está en
ejecución. Utilice la propiedad Caption para establecer u obtener el texto en un
control Label. Otras propiedades utilizadas con frecuencia para dar formato a un
control Label son Font y ForeColor.

Cómo utilizar una declaración WITH para dar formato a un control Label

Para utilizar la declaración WITH con el fin de cambiar las propiedades de un control
Label, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.
https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 7/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control Label al UserForm.

5. Agregue un control CommandButton al UserForm.

6. Haga doble clic en el control CommandButton para abrir la ventana Código


del UserForm.

7. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

With Label1
' Set the text of the label.
.Caption = "This is Label Example 1"
' Automatically size the label control.
.AutoSize = True
.WordWrap = False
' Set the font used by the Label control.
.Font.Name = "Times New Roman"
.Font.Size = 14
.Font.Bold = True
' Set the font color to blue.
.ForeColor = RGB(0, 0, 255)
End With

End Sub

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

9. Haga clic en CommandButton.

El texto "This is Label Example 1" aparece en el control Label con la fuente Times
New Roman en negrita y tamaño 14.

Controles TextBox

Los controles TextBox se utilizan con frecuencia para recabar la entrada de un


usuario. La propiedad Text contiene la entrada que se realiza en un control TextBox.

Cómo utilizar un control TextBox para validar una contraseña

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


un control de "edición con máscara". Los caracteres que se escriban en el control
TextBox se sustituyen en su visualización por el carácter que especifique. Para utilizar
un control TextBox con el fin de validar una contraseña, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 8/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control TextBox al UserForm.

5. En el menú Ver, haga clic en


Propiedades para hacer visible la ventana Propiedades.

6. En la propiedad PasswordChar del control TextBox, escriba *.

Nota: está cambiando el valor a un asterisco.

7. Agregue un control CommandButton al UserForm.

8. Haga doble clic en el control CommandButton para abrir la ventana Código


del UserForm.

9. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

If TextBox1.Text <> "userform" Then


MsgBox "Password is Incorrect. Please reenter."
TextBox1.Text = ""
TextBox1.SetFocus
Else
MsgBox "Welcome!"
Unload Me
End If

End Sub

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

11. Escriba la contraseña userform en el control TextBox.

12. Haga clic en el control CommandButton.

Para este ejemplo, la contraseña es "userform". Si escribe una contraseña incorrecta,


obtiene un cuadro de mensaje que así se lo indica, el control TextBox queda en
blanco y puede volver a escribir la contraseña. Cuando escribe la contraseña correcta,
obtiene un mensaje de bienvenida y el UserForm se cierra.

Para obtener información adicional al respecto, haga clic en el número de artículo


siguiente para verlo en Microsoft Knowledge Base:
213555 XL2000: No hay propiedad Data Validation en los controles TextBox de
un UserForm

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 9/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Controles CommandButton

Puede utilizar un control CommandButton para iniciar un procedimiento VBA. El


procedimiento VBA suele adjuntarse al evento Click del control CommandButton.
Para utilizar un control CommandButton que ejecuta un procedimiento cuando se
produce el evento Click, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control CommandButton al UserForm.

5. Haga doble clic en el control CommandButton para mostrar la ventana


Código del UserForm.

6. En la ventana Código, escriba el código siguiente:

Private Sub CommandButton1_Click()

red = Int(Rnd * 255)


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

End Sub

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

El color de fondo del control CommandButton1 cambia cada vez que hace clic en él.

Para obtener información adicional acerca del control CommandButton, haga clic en
los números de artículo siguientes para verlos en Microsoft Knowledge Base:
213572 XL2000: Hacer clic en el botón Cancel puede no descartar un UserForm

213743 XL2000: Cómo establecer el botón de comando predeterminado en un


UserForm

Controles ListBox

El propósito del control ListBox es ofrecer al usuario una lista de elementos entre los
que seleccionar. Puede almacenar la lista de elementos de un control ListBox en una
hoja de cálculo de Excel. Para rellenar un control ListBox con un intervalo de celdas
de una hoja de cálculo, utilice la propiedad RowSource. Cuando utiliza la propiedad
MultiSelect, puede configurar un control ListBox para que acepte múltiples
selecciones.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 10/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Cómo obtener el elemento actualmente seleccionado en el control ListBox

Utilice la propiedad Value de un control ListBox para obtener el elemento


actualmente seleccionado. Para obtener el elemento actualmente seleccionado en un
control ListBox de selección única, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:A5 de Hoja1, escriba los valores que quiere usar para rellenar
el control ListBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

5. Agregue un control ListBox al UserForm.

6. Haga doble clic en el control ListBox para mostrar la ventana Código del
control ListBox.

7. En la ventana Código, escriba el siguiente código para el evento ListBox1 Click:

Private Sub ListBox1_Click()

MsgBox ListBox1.Value

End Sub

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

Cuando hace clic en un elemento de la lista, aparece un cuadro de mensaje con el


elemento actualmente seleccionado.

Cómo obtener los elementos seleccionados en un control ListBox de selección


múltiple

Para determinar los elementos seleccionados en un control ListBox de selección


múltiple, debe pasar por todos los elementos de la lista realizando consultas a la
propiedad Selected. Para obtener los elementos actualmente seleccionados en un
control ListBox de selección múltiple, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:A5 de Hoja1, escriba los valores que quiere usar para rellenar
el control ListBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 11/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

5. Agregue un control ListBox al UserForm.

6. En el menú Ver, haga clic en


Propiedades para ver la ventana Propiedades.

7. Escriba los valores indicados para las siguientes propiedades del control
ListBox:

Property Value
----------- -----------------------
MultiSelect 1 - frmMultiSelectMulti
RowSource Sheet1!A1:A8

8. Agregue un control CommandButton al UserForm.

9. Haga doble clic en el control CommandButton para mostrar la ventana


Código del UserForm.

10. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Sub CommandButton1_Click ()

' Loop through the items in the ListBox.


For x = 0 to ListBox1.ListCount - 1

' If the item is selected...


If ListBox1.Selected(x) = True Then

' display the Selected item.


MsgBox ListBox1.List(x)
End If
Next x

End Sub

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

12. Seleccione uno o más elementos de la lista.

13. Haga clic en CommandButton1.

Después de hacer clic en CommandButton1, todos los elementos seleccionados en


el control ListBox aparecen en un cuadro de mensaje separado. Una vez aparecen los
elementos seleccionados en un cuadro de mensaje, el UserForm se cierra
automáticamente.

Cómo utilizar la propiedad RowSource para rellenar un control ListBox con las
celdas de una hoja de cálculo

Para utilizar la propiedad RowSource con el fin de rellenar un control ListBox desde
un intervalo de celdas de una hoja de cálculo, siga estos pasos:

1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 12/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

2. En las celdas A1:A5 de Hoja1, escriba los valores que quiere usar para rellenar
el control ListBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

5. Agregue un control ListBox al UserForm.

6. Agregue un control CommandButton al UserForm.

7. Haga doble clic en el control CommandButton para mostrar la ventana


Código del UserForm.

8. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()


ListBox1.RowSource = "=Sheet1!A1:A5"
End Sub

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

Nota: ListBox1 no contiene ningún valor.

10. Haga clic en CommandButton1.

ListBox1 se rellena con los valores de las celdas A1:A5 de Hoja1.

Cómo rellenar un control ListBox con valores de una matriz

Este ejemplo le muestra cómo rellenar un control ListBox con una variable de matriz.
Deberá asignar uno a uno los valores de la matriz al control ListBox. Normalmente,
este proceso requiere el uso de una estructura en bucle, como un bucle For…Next.
Para rellenar un control ListBox con una variable de matriz, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control ListBox al UserForm.

5. En el menú Insertar, haga clic en


Módulo para insertar una hoja de módulo.

6. En la ventana Código, escriba el código siguiente:

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 13/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Sub PopulateListBox()

Dim MyArray As Variant


Dim Ctr As Integer
MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "

For Ctr = LBound(MyArray) To UBound(MyArray)


UserForm1.ListBox1.AddItem MyArray(Ctr)
Next

UserForm1.Show

End Sub

7. En el menú Herramientas, haga clic en


Macros, haga clic en PopulateListBox y, a continuación, haga clic en
Ejecutar.

El procedimiento PopulateListBox crea una matriz sencilla y luego agrega los


elementos de la misma al control ListBox mediante el método AddItem. A
continuación, aparece el UserForm.

Cómo utilizar un intervalo horizontal de celdas en una hoja de cálculo para


rellenar un control ListBox

Si establece la propiedad RowSource de un control ListBox en un intervalo horizontal


de celdas, solo el primer valor aparece en el control ListBox.

Para rellenar un control ListBox desde un intervalo horizontal de celdas mediante el


método AddItem, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:E1 de Hoja1, escriba los valores que quiere usar para rellenar
el control ListBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

5. Agregue un control ListBox al UserForm.

6. En el menú Insertar, haga clic en


Módulo para insertar una hoja de módulo.

7. En la ventana Código, escriba el código siguiente:

Sub PopulateListWithHorizontalRange()

For Each x In Sheet1.Range("A1:E1")


UserForm1.ListBox1.AddItem x.Value
Next

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 14/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

UserForm1.Show

End Sub

8. En el menú Herramientas, haga clic en


Macros, haga clic en
PopulateListWithHorizontalRange y, a continuación, haga clic en
Ejecutar.

El procedimiento de la macro recorre en bucle las celdas A1:E5 de Hoja1 y agrega


uno a uno los valores a ListBox1.

Note: ListBox1 no está limitado a las celdas A1:E5 de Hoja1.

Cómo obtener múltiples valores de un control ListBox vinculado a múltiples


columnas de datos

Puede dar formato a los controles ListBox para mostrar más de una columna de
datos. Esto significa que el control ListBox muestra más de un elemento en cada
línea de la lista. Para obtener múltiples valores del elemento seleccionado en la lista,
siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. Escriba los siguientes datos en las celdas indicadas de Hoja1:

A1: Año B1: Región 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

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

5. Agregue un control Label al UserForm.

6. Agregue un control ListBox al UserForm.

7. Haga clic con el botón secundario del mouse en ListBox y, a continuación,


haga clic en
Propiedades.

8. Escriba o seleccione los valores indicados para las siguientes propiedades del
control ListBox, tal como se muestran en la siguiente tabla:

Property Value
----------------------------
https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 15/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

BoundColumn 1
ColumnCount 3
ColumnHeads True
RowSource Sheet1!A2:A5

9. Haga doble clic en el control ListBox para mostrar la ventana Código del
control ListBox.

10. En la ventana Código, escriba el código siguiente:

Private Sub ListBox1_Change()

Dim SourceData As Range


Dim Val1 As String, Val2 As String, Val3 As String

Set SourceRange = Range(ListBox1.RowSource)

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

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

End Sub

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

Cuando hace clic en una entrada en el control ListBox, la etiqueta cambia para
mostrar los tres elementos en dicha entrada.

Cómo eliminar todos los elementos de un control ListBox vinculado a una hoja
de cálculo

Para eliminar todos los elementos de un control ListBox vinculado a una hoja de
cálculo, borre el valor almacenado en la propiedad RowSource. Para eliminar
elementos de un control ListBox vinculado a una hoja de cálculo, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:A5 de Hoja1, escriba los valores que quiere usar para rellenar
el control ListBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

5. Agregue un control ListBox al UserForm.

6. Haga clic con el botón secundario del mouse en el control ListBox y, a


continuación, haga clic en Propiedades.

7. En la propiedad RowSource, escriba Hoja1!A1:A5.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 16/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

8. Agregue un control CommandButton al UserForm.

9. Haga doble clic en el control CommandButton para mostrar la ventana


Código del control CommandButton.

10. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

ListBox1.RowSource = ""

End Sub

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

El control ListBox que ha añadido al UserForm se rellena con los valores


introducidos en Hoja1.

12. Haga clic en CommandButton1.

Todos los elementos se eliminan de ListBox1.

Cómo eliminar todos los elementos de un control ListBox no vinculado a una


hoja de cálculo

No existe un único comando de VBA que elimine todos los elementos de un control
ListBox si la lista no está vinculada a una hoja de cálculo. Para eliminar todos los
elementos de un control ListBox rellenado desde una matriz de Visual Basic, siga
estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control ListBox al UserForm.

5. En el menú Insertar, haga clic en


Módulo para insertar una hoja de módulo.

6. En la ventana Código, escriba el código siguiente:

Sub PopulateListBox()

Dim MyArray As Variant


Dim Ctr As Integer
MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "

For Ctr = LBound(MyArray) To UBound(MyArray)


UserForm1.ListBox1.AddItem MyArray(Ctr)
Next
https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 17/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

UserForm1.Show

End Sub

7. Agregue un control CommandButton al UserForm.

8. Haga doble clic en el control CommandButton para mostrar la ventana


Código del control CommandButton.

9. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

For i = 1 To ListBox1.ListCount
ListBox1.RemoveItem 0
Next I

End Sub

10. En el menú Herramientas, haga clic en


Macros, haga clic en PopulateListBox y, a continuación, haga clic en
Ejecutar.

El control ListBox se rellena y aparece el UserForm.

11. Haga clic en CommandButton1.

Todos los elementos se eliminan de ListBox1.

Para obtener información adicional acerca del control ListBox, haga clic en los
números de artículo siguientes para verlos en Microsoft Knowledge Base:
161598 APAGADO: Cómo agregar datos a un control ComboBox o ListBox en
Excel o Word

211446 XL2000: La propiedad TextColumn muestra solo la primera columna

211896 XL2000: Cómo simular el control combinado List-Edit para UserForms

211899 XL2000: Problemas estableciendo encabezados de columna en el


control ListBox

213721 XL2000: Cómo eliminar todos los elementos de un control ListBox o


ComboBox

213722 XL2000: Cómo utilizar la propiedad TextColumn

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 18/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

213723 XL2000: Cómo obtener valores de un ListBox que muestra varias


columnas

213746 XL2000: Cómo rellenar un control ListBox con varios intervalos

213748 XL2000: Cómo rellenar un ListBox basado en otro

213752 XL2000: El uso del método AddItem provoca un error cuando


RowSource está vinculado a datos

213756 XL2000: Usar el método RemoveItem con controles ListBox o ComboBox

213759 XL2000: Cómo determinar qué elementos están seleccionados en un


ListBox

Controles ComboBox

Puede utilizar el control ComboBox como un cuadro de lista desplegable, o como un


cuadro combinado en el que puede seleccionar un valor en una lista o escribir un
valor nuevo. La propiedad Style determina si el control ComboBox actúa como un
cuadro de lista desplegable o como un cuadro combinado.

Nota: todos los ejemplos en la sección anterior del control ListBox pueden aplicarse
también al control ComboBox, excepto "Cómo obtener los elementos seleccionados
en un control ListBox de selección múltiple".

Cómo agregar un nuevo elemento a la lista si el control ComboBox no está


vinculado a una hoja de cálculo

Cuando escribe un valor que no está ya en la lista del control ComboBox, puede
decidir agregarlo a la lista. Para agregar el nuevo valor escrito en el control
ComboBox cuando el control ComboBox no está vinculado a la hoja de cálculo, siga
estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control ComboBox al UserForm.

5. En el menú Insertar, haga clic en


Módulo para insertar una hoja de módulo.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 19/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

6. En la ventana Código, escriba el código siguiente:

Sub PopulateComboBox()

Dim MyArray As Variant


Dim Ctr As Integer
MyArray = Array("Apples", "Oranges", "Peaches", "Bananas",

For Ctr = LBound(MyArray) To Ubound(MyArray)


UserForm1.ComboBox1.AddItem MyArray(Ctr)
Next

UserForm1.Show

End Sub

7. Agregue un control CommandButton al UserForm.

8. Haga doble clic en el control CommandButton para mostrar la ventana


Código del control CommandButton.

9. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

Dim listvar As Variant

listvar = ComboBox1.List

On Error Resume Next


' If the item is not found in the list...
If IsError(WorksheetFunction.Match(ComboBox1.Value, listvar
' add the new value to the list.
ComboBox1.AddItem ComboBox1.Value
End If

End Sub

10. En el menú Herramientas, haga clic en


Macros, haga clic en PopulateListBox y, a continuación, haga clic en
Ejecutar.

El control ComboBox se rellena y aparece el UserForm.

11. En el control ComboBox, escriba Mangoes (o cualquier valor que no esté ya en


la lista).

12. Haga clic en CommandButton1.

El nuevo valor escrito aparece ahora al final de la lista.

Cómo agregar un nuevo elemento a la lista si el control ComboBox está


vinculado a una hoja de cálculo

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 20/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Cuando un usuario escribe un valor que no está ya en la lista del control ComboBox,
puede decidir agregarlo a la lista. Para agregar a la lista el nuevo valor escrito en el
control ComboBox, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:A5 de Hoja1, escriba los valores que quiere usar para rellenar
el control ComboBox.

3. Seleccione las celdas A1:A5 en Hoja1.

4. En el menú Insertar, seleccione


Nombre y, a continuación, haga clic en Definir.

En el
cuadro Nombres en libro, escriba ListRange y, a continuación, haga clic en
Aceptar. Esto crea el nombre definido ListRange. Puede utilizar el nombre
definido ListRange para vincular la propiedad RowSource del control
ComboBox a la hoja de cálculo.

5. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

6. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

7. Agregue un control ComboBox al UserForm.

8. En las Propiedades de ComboBox1, escriba Hoja1!ListRange como la


propiedad RowSource.

9. Agregue un control CommandButton al UserForm.

10. Haga doble clic en el control CommandButton para mostrar la ventana


Código del control CommandButton.

11. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

Dim SourceData As Range


Dim found As Object

Set SourceData = Range("ListRange")


Set found = Nothing
' Try to find the value on the worksheet.
Set found = SourceData.Find(ComboBox1.Value)

' If the item is not found in the list...


If found Is Nothing Then
' redefine ListRange.
SourceData.Resize(SourceData.Rows.Count + 1, 1).Name = "
' Add the new item to the end of the list on the workshe
SourceData.Offset(SourceData.Rows.Count, 0).Resize(1, 1)

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 21/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

= ComboBox1.Value
' Reset the list displayed in the ComboBox.
ComboBox1.RowSource = Range("listrange").Address(externa
End If

End Sub

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

El UserForm aparece en Hoja1.

13. En el control ComboBox, escriba un valor que no esté ya en la lista.

14. Haga clic en CommandButton1.

El nuevo elemento escrito en el control ComboBox se añade a la lista, y la lista a la


que el control ComboBox está vinculada se amplía para incluir las celdas A1:A6.

Cómo mostrar la lista de un control ComboBox cuando aparece el UserForm

En ocasiones puede ser útil mostrar la lista de un control ComboBox cuando aparece
un UserForm por primera vez. El siguiente ejemplo utiliza el evento Activate del
UserForm. Para mostrar la lista de un control ComboBox, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:A5 de Hoja1, escriba los valores que quiere usar para rellenar
el control ComboBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

5. Agregue un control ComboBox al UserForm.

6. En las Propiedades de ComboBox1, escriba Sheet1!A1:A5 como la


propiedad RowSource.

7. Haga doble clic en el UserForm para mostrar su ventana Código.

8. En la ventana Código, escriba el siguiente código para el evento


CommandButton Click:

Private Sub UserForm_Activate()

ComboBox1.DropDown

End Sub

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

El UserForm aparece en Hoja1 y puede ver la lista de ComboBox1.


https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 22/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Cómo mostrar la lista de un control ComboBox cuando realiza una selección en


otro control ComboBox

Para mostrar automáticamente la lista de un control ComboBox cuando se realiza


una selección en otro control ComboBox, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En las celdas A1:A10 de Hoja1, escriba los valores que quiere usar para rellenar
el control ComboBox.

3. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

4. En el menú Insertar, haga clic en


Módulo.

5. En la ventana Código del módulo, escriba el código siguiente:

Sub DropDown_ComboBox()

UserForm1.ComboBox2.DropDown

End Sub

6. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

7. Agregue un control ComboBox al UserForm.

8. En las Propiedades de ComboBox1, escriba Sheet1!A1:A5 como la


propiedad RowSource.

9. Haga doble clic en el control ComboBox para abrir la ventana Código del
control ComboBox.

10. En la ventana Código del control ComboBox, escriba el siguiente código para
el evento ComboBox Click:

Private Sub ComboBox1_Click()

Application.OnTime Now, "DropDown_ComboBox"

End Sub

11. Agregue un segundo control ComboBox al UserForm.

12. En las Propiedades de ComboBox2, escriba Sheet1!A6:A10 como la


propiedad RowSource.

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

Cuando hace clic en un elemento de la lista ComboBox1, la lista de ComboBox2


aparece automáticamente.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 23/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Para obtener información adicional acerca del control ComboBox, haga clic en los
números de artículo siguientes para verlos en Microsoft Knowledge Base:
161598 APAGADO: Cómo agregar datos a un control ComboBox o ListBox en
Excel o Word

211446 XL2000: La propiedad TextColumn muestra solo la primera columna

211899 XL2000: Problemas estableciendo encabezados de columna en el


control ListBox

213717 XL2000: Error de tiempo de ejecución al emplear el método DropDown


con un ComboBox

213718 XL2000: Cómo mostrar una lista ComboBox cuando se muestra un


UserForm

213721 XL2000: Cómo eliminar todos los elementos de un control ListBox o


ComboBox

213722 XL2000: Cómo utilizar la propiedad TextColumn

213752 XL2000: El uso del método AddItem provoca un error cuando


RowSource está vinculado a datos

213756 XL2000: Usar el método RemoveItem con controles ListBox o ComboBox

Control Frame

Utilice un control Frame para agrupar de forma lógica elementos relacionados en un


UserForm. Los controles Frame se emplean con frecuencia para agrupar controles
OptionButton.

Cómo recorrer todos los controles dentro de un control Frame.

Para utilizar un bucle For Each…Next con el fin de obtener acceso a todos los
controles dentro de un control Frame, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 24/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control Frame al UserForm.

5. Agregue un control OptionButton al control Frame.

Repita este paso para agregar dos controles OptionButton más en el control
Frame.

6. Haga doble clic en el control Frame para abrir la ventana Código del control
Frame.

7. En la ventana Código, escriba el siguiente código para el evento Frame Click:

Private Sub Frame1_Click()

Dim Ctrl As Control

For Each Ctrl In Frame1.Controls


Ctrl.Enabled = Not Ctrl.Enabled
Next

End Sub

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

9. En el UserForm, haga clic en el control Frame.

La primera vez que haga clic en el control Frame, ningún control del control Frame
está disponible. Si vuelve a hacer clic en el control Frame, los controles vuelven a
estar disponibles.

Control OptionButton

Puede utilizar grupos de controles OptionButton para realizar una selección entre un
grupo de opciones. Puede utilizar cualquiera de las técnicas siguientes para agrupar
controles OptionButton:
Control Frame

Propiedad GroupName

Nota: el valor Activado, el valor Sí y el valor Verdadero indican que un control


OptionButton está seleccionado. El valor Desactivado, el valor No y el valor
Falso indican que un control OptionButton no está seleccionado.

Cómo determinar cuál de los controles OptionButton en un control Frame es el


que está seleccionado

Cuando agrupa controles OptionButton mediante un control Frame, puede


determinar cuál de los controles OptionButton está seleccionado recorriendo en
https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 25/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

bucle todos los controles dentro del control Frame y comprobando la propiedad
Value de cada uno. Para determinar qué control OptionButton está seleccionado,
siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control Frame al UserForm.

5. Agregue un control OptionButton al control Frame.

Repita este paso para agregar dos controles OptionButton más en el control
Frame.

6. Agregue un control CommandButton en el UserForm, fuera del control Frame.

7. Haga doble clic en el control CommandButton para mostrar la ventana


Código del UserForm.

8. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

For Each x In Frame1.Controls


If x.Value = True Then
MsgBox x.Caption
End If
Next

End Sub

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

10. En el UserForm, haga clic en un control OptionButton y, a continuación, haga


clic en
CommandButton1.

Aparece un cuadro de mensaje que contiene el título del control OptionButton


actualmente seleccionado.

Cómo determinar el control OptionButton que está seleccionado

El propósito del siguiente ejemplo es determinar el control OptionButton que está


seleccionado en Group1. Para crear un UserForm con dos grupos de controles
OptionButton, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 26/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control Frame al UserForm.

5. Agregue un control OptionButton en el control Frame.

Repita este paso para agregar dos controles OptionButton más en el control
Frame.

6. Por cada control OptionButton, escriba Group1 en la propiedad GroupName.

7. Repita los pasos 4 y 5 para crear un segundo control Frame que contenga tres
controles OptionButton.

8. Por cada control OptionButton en el segundo control Frame, escriba Group2


en la propiedad GroupName.

9. Agregue un control CommandButton en el UserForm, fuera de los controles


Frame.

10. Haga doble clic en el control CommandButton para mostrar la ventana


Código del UserForm.

11. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

Dim x As Control

' Loop through ALL the controls on the UserForm.


For Each x In Me.Controls
' Check to see if "Option" is in the Name of each contr
If InStr(x.Name, "Option") Then
' Check Group name.
If x.GroupName = "Group1" Then
' Check the status of the OptionButton.
If x.Value = True Then
MsgBox x.Caption
Exit For
End If
End If
End If
Next

End Sub

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

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 27/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

13. En el UserForm, haga clic en un control OptionButton en Group1 y, a


continuación, haga clic en
CommandButton1.

Aparece un cuadro de mensaje que contiene el título del control OptionButton


actualmente seleccionado.

Para obtener información adicional acerca de los controles OptionButton, haga clic
en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
213724 XL2000: Problemas al utilizar la propiedad TripleState para botones de
opción

Control CheckBox

Puede utilizar un control CheckBox para indicar un valor de verdadero o falso. Un


control CheckBox que aparece con una marca de verificación indica un valor de
Verdadero. Un control CheckBox que aparece sin marca de verificación indica un
valor de Falso. Si el valor de la propiedad TripleState es Verdadero, un control
CheckBox también puede adoptar el valor Nulo. Un control CheckBox con el valor
Nulo aparece como no disponible.

Nota: el valor Activado, el valor Sí y el valor Verdadero indican que un control


CheckBox está seleccionado. El valor Desactivado, el valor No y el valor Falso indican
que un control CheckBox está vacío.

Cómo comprobar el valor de un control CheckBox

Para utilizar la propiedad Value con el fin de obtener el valor actual de un control
CheckBox, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control CheckBox al UserForm.

5. En la lista Propiedades de CheckBox1, seleccione Verdadero para la propiedad


TripleState.

6. Haga doble clic en el control CheckBox para mostrar la ventana Código del
control CheckBox.

7. En la ventana Código, escriba el siguiente código para el evento CheckBox1


Change:

Private Sub CheckBox1_Change()

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 28/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Select Case CheckBox1.Value


Case True
CheckBox1.Caption = "True"
Case False
CheckBox1.Caption = "False"
Case Else
CheckBox1.Caption = "Null"
End Select

End Sub

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

Cuando hace clic en el control CheckBox, el título del control CheckBox cambia para
reflejar el valor actual.

Control ToggleButton

Un control ToggleButton tiene el mismo aspecto que un control CommandButton


hasta que se hace clic en él. Cuando se hace clic en un control ToggleButton, aparece
presionado o pulsado. La propiedad Value de un control ToggleButton es Verdadero
cuando el botón está seleccionado, y Falso cuando no está seleccionado. Si el valor
de la propiedad TripleState es Verdadero, un control ToggleButton también puede
adoptar el valor Nulo. Un control ToggleButton con el valor Nulo aparece como no
disponible.

Nota: el valor Activado, el valor Sí y el valor Verdadero indican que un control


ToggleButton está seleccionado. El valor Desactivado, el valor No y el valor Falso
indican que un control ToggleButton no está seleccionado.

Cómo obtener el valor de un control ToggleButton

Para obtener el valor de un control ToggleButton, siga estos pasos:


1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control ToggleButton al UserForm.

5. Agregue un control Label al UserForm.

6. Haga doble clic en el control ToggleButton para abrir la ventana Código del
control ToggleButton.

7. En la ventana Código, escriba el siguiente código para el evento


ToggleButton1 Click:

Private Sub ToggleButton1_Click()

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 29/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

If ToggleButton1.Value = True Then


' Set UserForm background to Red.
Me.BackColor = RGB(255, 0, 0)
Else
' Set UserForm background to Blue.
Me.BackColor = RGB(0, 0, 255)
End If

End Sub

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

Cuando hace clic en el botón ToggleButton, el color de fondo del UserForm cambia.

Cómo crear un grupo de controles ToggleButton mutuamente exclusivos

Este ejemplo utiliza el evento MouseUp para establecer una variable y realiza
llamadas al procedimiento ExclusiveToggleButtons. El procedimiento
ExclusiveToggleButtons determina qué control ToggleButton está seleccionado y
cancela los demás. Para crear un grupo de controles ToggleButton mutuamente
exclusivos, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


Módulo.

4. En la ventana Código del módulo, escriba el código siguiente:

' Variable that holds the name of the ToggleButton that was clic
Public clicked As String

Sub ExclusiveToggleButtons()

Dim toggle As Control

' Loop through all the ToggleButtons on Frame1.


For Each toggle In UserForm1.Frame1.Controls

' If Name of ToggleButton matches name of ToggleButton


' that was clicked...
If toggle.Name = clicked Then
'...select the button.
toggle.Value = True
Else
'...otherwise clear the selection of the button.
toggle.Value = False
End If
Next

End Sub

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 30/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

5. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

6. Agregue un control Frame al UserForm.

7. Agregue un control ToggleButton en el control Frame.

Repita este paso para agregar dos controles ToggleButton más en el control
Frame.

8. Haga doble clic en el control Frame para mostrar la ventana Código del
UserForm.

9. En la ventana Código del módulo, escriba el siguiente código para el evento


ToggleButton MouseUp:

Private Sub ToggleButton1_MouseUp(ByVal Button As Integer, _


ByVal Shift As Integer, ByVal X As Single, ByVal Y

clicked = ToggleButton1.Name
Application.OnTime Now, "ExclusiveToggleButtons"

End Sub

Private Sub ToggleButton2_MouseUp(ByVal Button As Integer, _


ByVal Shift As Integer, ByVal X As Single, ByVal Y

clicked = ToggleButton2.Name
Application.OnTime Now, "ExclusiveToggleButtons"

End Sub

Private Sub ToggleButton3_MouseUp(ByVal Button As Integer, _


ByVal Shift As Integer, ByVal X As Single, ByVal Y

clicked = ToggleButton3.Name
Application.OnTime Now, "ExclusiveToggleButtons"

End Sub

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

Cuando hace clic en un control ToggleButton, el control ToggleButton previamente


seleccionado se cancela.

Control TabStrip

Utilice un control TabStrip para ver distintos conjuntos de información para un


conjunto de controles.

Cómo controlar un control TabStrip mediante programación

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 31/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Para cambiar la propiedad BackColor de un control Image en función de la pestaña


seleccionada, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control TabStrip al UserForm.

5. Agregue un control Image que cubra la base del control TabStrip, pero no las
pestañas.

6. En el panel Propiedades de Image1, escriba


&H000000FF& para la propiedad BackColor.

7. Haga doble clic en el control TabStrip para abrir la ventana Código del control
TabStrip.

8. En la ventana Código, escriba el siguiente código para el evento TabStrip1


Change:

Private Sub TabStrip1_Change()

Dim i As Integer

i = TabStrip1.SelectedItem.Index
Select Case i
Case 0
' If Tab1 is selected, change the color of Image con
Image1.BackColor = RGB(255, 0, 0)
Case 1
' If Tab2 is selected, change the color of Image con
Image1.BackColor = RGB(0, 255, 0)
End Select

End Sub

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

El color del control Image cambia en función de qué pagina esté activa en el control
TabStrip.

Para obtener información adicional acerca del control TabStrip, haga clic en el
número de artículo siguiente para verlo en Microsoft Knowledge Base:
213254 XL2000: Cómo usar el control TabStrip en un UserForm

Control MultiPage

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 32/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Utilice un control MultiPage para trabajar con un lote de información que puede
ordenarse en diversas categorías. Un control MultiPage se compone de uno o más
objetos Page, cada uno de los cuales contiene un conjunto distinto de controles.
Puede establecer la página activa mediante programación estableciendo la
propiedad Value del control MultiPage.

Cómo controlar un control MultiPage mediante programación

Para agregar un control MultiPage y controlarlo empleando una macro, siga estos
pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control MultiPage al UserForm.

5. Agregue un control Label a Page1 en el control MultiPage.

6. Agregue un control TextBox a Page1 en el control MultiPage.

7. En el control MultiPage, haga clic en Page2 y, a continuación, repita los pasos


5 y 6 para agregar un control Label y un control TextBox.

8. Haga doble clic en el control MultiPage para abrir la ventana Código del
control MultiPage.

9. En la ventana Código, escriba el siguiente código para el evento MultiPage1


Change:

Private Sub MultiPage1_Change()

Select Case MultiPage1.Value


' If activating Page1...
Case 0
Label1.Caption = TextBox2.Text
TextBox1.Text = ""
' If activating Page2...
Case 1
Label2.Caption = TextBox1.Text
TextBox2.Text = ""
End Select

End Sub

10. En la ventana Código, escriba el siguiente código para el evento UserForm


Initialize:

Private Sub UserForm_Initialize()

' Force Page1 to be active when UserForm is displayed.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 33/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

MultiPage1.Value = 0
Label1.Caption = ""

End Sub

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

En el control TextBox de Page1, escriba Test. Cuando hace clic en la pestaña


Page2, TextBox2 se borra y el título de Label2 cambia a la entrada que realizó
en TextBox1 de Page1 ("Test").

Cómo crear una interfaz de asistente mediante un control MultiPage

Cuando una tarea requiere varios pasos incrementales, una interfaz de asistente
puede ser muy efectiva. Puede utilizar el control MultiPage para crear una interfaz de
asistente en vez de utilizar varios UserForms. Este ejemplo manipula un control
MultiPage que tiene tres páginas. Un procedimiento adjunto al
evento Initialize del UserForm deshabilita Page2 y Page3, y fuerza que Page1 sea la
página activa del control MultiPage.

Nota: cuando indiza las páginas de un control MultiPage mediante la colección


Pages, la primera página de la colección es la página cero. Este procedimiento
también establece el título de los controles CommandButton y deshabilita el botón
<Back.

Nota: el procedimiento asignado al evento Click de CommandButton1 controla la


funcionalidad del botón <Back. El procedimiento asignado al evento Click de
CommandButton2 controla la funcionalidad del botón Next>. Para crear una interfaz
de asistente mediante un control MultiPage, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control MultiPage al UserForm.

5. Haga clic con el botón secundario del mouse en la pestaña Page1 y, a


continuación, haga clic en
New Page para agregar Page3 al control MultiPage.

6. Agregue un control CommandButton en el UserForm que no esté en el control


MultiPage.

Repita este paso para agregar un segundo control CommandButton al


UserForm.

7. Haga doble clic en el UserForm para abrir su ventana Código.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 34/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

8. En la ventana Código, escriba el siguiente código para el evento UserForm


Initialize:

Private Sub UserForm_Initialize()

With MultiPage1
' The next 2 lines disable Page2 & Page3.
.Pages(1).Enabled = False
.Pages(2).Enabled = False
' Make Page1 the active page.
.Value = 0
End With

' Set the caption on the CommandButtons.


CommandButton1.Caption = "<Back"
CommandButton1.Enabled = False
CommandButton2.Caption = "Next>"

End Sub

' Procedure for the "<Back" button


Private Sub CommandButton1_Click()
Select Case MultiPage1.Value
Case 1 ' If Page2 is act
With MultiPage1
.Pages(0).Enabled = True ' Enable Page1.
.Value = MultiPage1.Value - 1 ' Move back 1 pag
.Pages(1).Enabled = False ' Disable Page2.
End With
CommandButton1.Enabled = False ' Disable Back bu

Case 2 ' If Page3 is act


With MultiPage1
.Pages(1).Enabled = True ' Enable Page2.
.Value = MultiPage1.Value - 1 ' Move back 1 pag
.Pages(2).Enabled = False ' Disable Page3.
CommandButton2.Caption = "Next>"
End With
End Select

End Sub

' Procedure for the "Next>" button


Private Sub CommandButton2_Click()

Select Case MultiPage1.Value


Case 0 ' If Page1 is ac
With MultiPage1
.Value = MultiPage1.Value + 1 ' Move forward 1
.Pages(1).Enabled = True ' Enable Page2.
.Pages(0).Enabled = False ' Disable Page1.
End With
CommandButton1.Enabled = True ' Enable Back bu

Case 1 ' If Page2 is ac


With MultiPage1
.Value = MultiPage1.Value + 1 ' Move forward 1
.Pages(2).Enabled = True ' Enable Page3.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 35/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

.Pages(1).Enabled = False ' Disable Page2.


End With
CommandButton2.Caption = "Finish" ' Change Next bu

Case 2 ' If Page3 is ac


MsgBox "Finished!" ' User is Finish
Unload Me ' Unload the Use
End Select

End Sub

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

Cuando hace clic en Next>, Page2 se activa y el botón <Back queda disponible.
Cuando hace clic en
Next> una segunda vez, Page3 se activa y el título de
CommandButton2 cambia a "Finish".

Control ScrollBar

Puede utilizar un control ScrollBar cuando quiera cambiar el valor que se muestra en
otro control, como un control Label.

Cómo cambiar un control Label basado en el valor de un control ScrollBar

Para cambiar la propiedad Caption de un control Label al estado actual de la


propiedad Value de un control ScrollBar, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control ScrollBar al UserForm.

5. Agregue un control Label al UserForm.

6. Haga doble clic en el control ScrollBar para abrir la ventana Código del control
ScrollBar.

7. En la ventana Código, escriba el siguiente código para el evento ScrollBar1


Change:

Private Sub ScrollBar1_Change()

Label1.Caption = ScrollBar1.Value

End Sub

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

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 36/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Cuando se desplaza mediante el control ScrollBar, Label1 se actualiza con el valor


actual del control ScrollBar.

Control SpinButton

Un control SpinButton, al igual que el control ScrollBar, se usa con frecuencia para
aumentar o reducir el valor de otro control, por ejemplo un control Label. La
propiedad SmallChange determina cuánto cambia el valor de un control SpinButton
cuando se hace clic en él.

Cómo agregar un control SpinButton que aumente o reduzca una fecha


almacenada en un control TextBox

Para agregar un control SpinButton que aumente o reduzca una fecha almacenada
en un control TextBox, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control SpinButton al UserForm.

5. Agregue un control TextBox al UserForm.

6. Haga doble clic en el control SpinButton para abrir la ventana Código del
control SpinButton.

7. En la ventana Código, escriba el siguiente código para el evento SpinButton1


SpinUp:

Private Sub SpinButton1_SpinUp()

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

End Sub

8. En la ventana Código, escriba el siguiente código para el evento SpinButton1


SpinDown:

Private Sub SpinButton1_SpinDown()

TextBox1.Text = DateValue(TextBox1.Text) - 1

End Sub

9. En la ventana Código, escriba el siguiente código para el evento UserForm


Initialize:

Private Sub UserForm_Initialize()

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 37/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

TextBox1.Text = Date

End Sub

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

Cuando el UserForm aparece, la fecha actual se muestra en TextBox1. Cuando hace


clic en el control SpinButton, la fecha se aumenta o reduce en un día.

En este ejemplo, si cambia la propiedad SmallChange de SpinButton1, no se afecta al


número de días en que cambia la entrada en TextBox1 cuando hace clic en
SpinButton1. El número de días lo determina únicamente el procedimiento que haya
adjuntado a los eventos SpinUp y SpinDown de SpinButton1.

Para obtener información adicional acerca del control SpinButton, haga clic en el
número de artículo siguiente para verlo en Microsoft Knowledge Base:
213224 XL2000: Ejemplo en Visual Basic de uso de un control SpinButton con
una fecha

Control RefEdit

El control RefEdit imita el comportamiendo de los cuadros de referencia integrados


en Excel. Puede utilizar la propiedad Value para obtener la dirección de celda actual
almacenada en un control RefEdit.

Cómo rellenar un intervalo de celdas en función de un intervalo seleccionado


mediante el control RefEdit

Para utilizar el control RefEdit con el fin de rellenar celdas, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control RefEdit al UserForm.

5. Agregue un control CommandButton al UserForm.

6. Haga doble clic en el control CommandButton para abrir la ventana Código


del control CommandButton.

7. En la ventana Código, escriba el siguiente código para el evento


CommandButton1 Click:

Private Sub CommandButton1_Click()

Dim MyRange As String

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 38/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

MyRange = RefEdit1.Value
Range(MyRange).Value = "test"
Unload Me

End Sub

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

El UserForm aparece.

9. Haga clic en el botón del control RefEdit.

Fíjese en que el UserForm se contrae.

10. Seleccione un intervalo de celdas, como A1:A5, y luego haga clic en el botón
del control RefEdit para ampliar el UserForm.

11. Haga clic en CommandButton1.

El UserForm se cierra y las celdas seleccionadas contienen ahora la palabra "test".

Para obtener información adicional acerca del control RefEdit, haga clic en el número
de artículo siguiente para verlo en Microsoft Knowledge Base:
213776 XL2000: Cómo usar el control RefEdit en un UserForm

Control Image

El propósito del control Image es mostrar una imagen en un UserForm. Para asignar
una imagen a un control Image en tiempo de ejecución, utilice la función
LoadPicture.

Cómo cargar una imagen en un control Image

Para insertar un control Image que le pida que seleccione una imagen a cargar
cuando haga clic en el control Image, siga estos pasos:
1. Inicie Excel y, a continuación, abra un nuevo libro vacío.

2. En el menú Herramientas, seleccione


Macro y haga clic en Editor de Visual Basic.

3. En el menú Insertar, haga clic en


UserForm para insertar un UserForm en su libro.

4. Agregue un control Image al UserForm.

5. Haga doble clic en el control Image para abrir la ventana Código del control
Image.

6. En la ventana Código, escriba el siguiente código para el evento Image1 Click:

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 39/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Private Sub Image1_Click()

Dim fname As String

' Display the Open dialog box.


fname = Application.GetOpenFilename(filefilter:= _
"Bitmap Files(*.bmp),*.bmp", Title:="Select Image To

' If you did not click Cancel...


If fname <> "False" Then

' Load the bitmap into the Image control.


Image1.Picture = LoadPicture(fname)

' Refresh the UserForm.


Me.Repaint
End If

End Sub

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

Aparece el UserForm.

8. Haga clic en el control Image.

Cuando hace clic en el control Image aparece el cuadro de diálogo


Seleccionar imagen a abrir, donde puede seleccionar un archivo de mapa de
bits que insertar en el control.

Para obtener información adicional acerca del control Image , haga clic en el número
de artículo siguiente para verlo en Microsoft Knowledge Base:
213732 XL2000: Usar la función LoadPicture con un control Image

Información adicional

El Examinador de objetos

Hay disponible una lista completa con todas las propiedades y métodos de
comandos específicos en el Examinador de objetos. Para encontrar esta información
en Excel, siga estos pasos:
1. En el menú Herramientas, seleccione
Macro y haga clic en Editor de Visual Basic.

2. En el menú Ver, haga clic en Examinador de objetos.

3. En el cuadro Texto de búsqueda, escriba el nombre del control que quiere y, a


continuación, haga clic en Buscar.

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 40/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

Para obtener más información acerca de cómo 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 Asistente de Office o el Asistente de
respuesta y, a continuación, haga clic en
Buscar para ver el tema.

Para obtener información adicional acerca de cómo instalar la Ayuda de Microsoft


Excel en su equipo, haga clic en el número de artículo siguiente para verlo en
Microsoft Knowledge Base:
231946 OFF2000: Cómo agregar/eliminar un solo programa o componente de
Office

Última actualización: 27 mar. 2017

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 41/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 42/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 43/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 44/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 45/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 46/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 47/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 48/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 49/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 50/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 51/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 52/53
26/1/2018 Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar UserForms en Excel

https://support.microsoft.com/es-es/help/829070/how-to-use-visual-basic-for-applications-vba-to-change-userforms-in-ex 53/53

Вам также может понравиться