Cómo utilizar Visual Basic para Aplicaciones (VBA) para cambiar los formularios de usuario en Excel

Seleccione idioma Seleccione idioma
Id. de artículo: 829070 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe cómo cambiar los formularios de usuario mediante programación en Microsoft Excel. Incluye ejemplos y Microsoft Visual Basic para Aplicaciones (VBA) macros que muestran cómo sacar partido de las capacidades de los formularios de usuario y cómo utilizar los controles de ActiveX ? están disponibles para los formularios de usuario.

Una introducción a los principios básicos de los formularios de usuario describe cómo mostrar los formularios de usuario, cómo ocultar temporalmente los formularios de usuario y cómo descartar los formularios de usuario. También se muestra cómo utilizar los eventos más comunes que están asociados con los formularios de usuario, el Inicializar evento, el Haga clic en evento y la Terminar evento. Uno o más de los siguientes ejemplos muestran cómo utilizar cada uno de los siguientes controles de ActiveX ? en un UserForm:
  • Etiqueta control
  • Cuadro de texto control
  • Control CommandButton control
  • Cuadro de lista control
  • ComboBox control
  • Marco control
  • Control OptionButton control
  • Casilla de verificación control
  • ToggleButton control
  • Control TabStrip control
  • Control multiPage control
  • Barra de desplazamiento control
  • Control SpinButton control
  • RefEdit control
  • Imagen control

INTRODUCCIÓN

En este artículo se describe cómo utilizar VBA para realizar cambios en los formularios de usuario en Excel.

Más información

Microsoft proporciona ejemplos de programación unicamente con fines ilustrativos, sin ninguna garantía tanto expresa como implícita. Esto incluye las garantías implícitas de comerciabilidad o idoneidad para un fin determinado, pero sin limitarse a ellas. Este artículo se supone que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan 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 que cumplan sus requisitos específicos.

Conceptos básicos de UserForm

Cómo mostrar un formulario de usuario

La sintaxis que se utiliza para mostrar un formulario UserForm mediante programación es la siguiente:
UserFormName.Mostrar
Para mostrar un UserForm que se denomina UserForm1, utilice el siguiente código:
UserForm1.Show
Puede cargar un UserForm en la memoria sin que se muestre realmente. un formulario complejo de usuario puede tardar varios segundos en aparecer. Como puede precargar un UserForm en la memoria, puede decidir cuándo se debe provocar esta sobrecarga. Para cargar UserForm1 en memoria sin mostrarlo, utilice el código siguiente:
Load UserForm1
Para mostrar el formulario de usuario, debe utilizar el métodoShow que se ha mostrado anteriormente.

Cómo ocultar temporalmente un UserForm

Si desea ocultar temporalmente un formulario de usuario, utilice el métodoOcultar . Desea ocultar un UserForm si la aplicación implica moverse entre los UserForms. Para ocultar un UserForm, utilice el siguiente código:
UserForm1.Hide
Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
213747 XL2000: Cómo moverse entre los formularios UserForm personalizados con botones de comando

Cómo quitar un UserForm de la memoria

Para quitar un formulario de usuario de la memoria, utilice la instrucción dedescarga . Para descargar un UserForm que se denomina UserForm1, utilice el siguiente código:
Unload UserForm1
Si descarga un UserForm 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 controlCommandButton ), puede utilizar el "Me" (palabra clave) en lugar del nombre de UserForm. Para utilizar el "yo" palabra clave para descargar un formulario de usuario, utilice el código siguiente:
Unload Me

Cómo utilizar los eventos de formulario de usuario

Los UserForm 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 acción realizada por un usuario puede iniciar varios eventos. Entre los más frecuentemente utilizados eventos para un UserForm son el evento Initialize , el evento Click y el evento Terminate .

Nota Puede hacerse referencia aun módulo de Visual Basic que contiene un procedimiento de evento como el módulo "detrás" de UserForm. Un módulo que contiene procedimientos de evento no está visible en la colección de módulos de la ventana del Editor de Visual Basic de Microsoft Project Explorer. Debe hacer doble clic en el cuerpo de un formulario UserForm para ver el módulo de código de UserForm.

Cómo interceptar eventos de UserForm

Para interceptar los eventos UserForm, siga estos pasos:
  1. Crear un nuevo libro en Excel.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Haga doble clic en el UserForm para mostrar la ventana de theCode para el UserForm.
  5. En el módulo, escriba el siguiente código:
    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.Height
        MsgBox prompt:=msg, Title:="Resize Event"
    
    End Sub
    
    
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    
        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 RunSub/UserForm.
Cuando se carga por primera vez el formulario de usuario, la macro utiliza el evento Initialize para cambiar la propiedad Caption del objeto UserForm a "Events Events Events!" y la propiedad BackColor en azul oscuro.

Al hacer clic en el formulario UserForm, inicia el evento Click . El evento Click cambia de tamaño el formulario UserForm. Ya ha creado un procedimiento para el evento Resize , recibirá dos cuadros de mensaje después de hacer clic en el formulario UserForm. El evento Resize se produce dos veces porque el código tras el evento Click cambia la propiedad Width y la propiedad Height de UserForm.

Al cerrar el UserForm se inicia el evento QueryClose . El evento QueryClose muestra un cuadro de mensaje que contiene el título que le asignó el UserForm en el código 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 continuación, genera un cuadro de mensaje que indica que el título de UserForm UserForm1. El evento Terminate se produce después de que el formulario de usuario se quita de la memoria y el título de UserForm devuelve a su estado original.

Cómo impedir que un formulario de usuario se cierra con el botón Cerrar

Al ejecutar un formulario de usuario, se agrega un botón Cerrar en la esquina superior derecha de la ventana de UserForm . Si desea impedir que se cierra mediante el botón Cerrar el 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 cómo se cerró el UserForm. El valor de vbFormControlMenu para el argumento CloseMode indica que se ha hecho clic en el botón Cerrar . Para mantener el UserForm activa, establezca el argumento Cancel del evento QueryClose en True. Para utilizar el evento QueryClose para impedir que se cierre con el botón Cerrar un UserForm , siga estos pasos:
  1. Crear un nuevo libro en Excel.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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. Haga doble clic en el UserForm para mostrar la ventana de theCode para el UserForm.
  6. En la ventana código, escriba el siguiente código:
    Private Sub CommandButton1_Click()
    
        Unload Me
    
    End Sub
    
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    
        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 RunSub/UserForm.
El formulario de usuario no se cierra al hacer clic en el botón Cerrar . Debe hacer clic en el control CommandButton para cerrar el formulario UserForm.

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
207714 XL2000: Errores de tiempo de ejecución mediante la colección de formularios de usuario
211527 XL2000: No se puede arrastrar el control de UserForm a una hoja de cálculo
211868 XL2000: Error al ejecutar la macro que se inserta en el control en UserForm
213582 XL2000: Problemas al utilizar la macro para agregar el control a UserForm
213583 XL2000: No se pueden mostrar UserForm en otros proyectos
213736 XL2000: Cómo determinar la tecla presionada junto con el botón primario del mouse
213744 XL2000: Cómo ocultar temporalmente un UserForm
213747 XL2000: Cómo moverse entre los formularios UserForm personalizados con botones de comando
213749 XL2000: Cómo utilizar un formulario de usuario para introducir datos
213768 XL2000: Cómo cambiar dinámicamente el tamaño de un UserForm
213774 XL2000: Cómo crear una pantalla de inicio con un UserForm

Código de VBA

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

Nota El código de VBA que se incluye en este artículo 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 están disponibles para un control. Para ver una lista de propiedades, en el menú Ver , haga clic en la Ventana Propiedades.

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

Cuando se utiliza el Editor de Visual Basic para diseñar un cuadro de diálogo, está utilizando el modo de diseño. En modo de diseño, 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 la Ventana Propiedades.

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

Nota Los controles responden a eventos en modo de ejecución.

Cómo hacer referencia a los controles de un UserForm

Cómo hacer referencia a los controles mediante programación depende del tipo de hoja de módulo de Visual Basic donde se ejecuta el código. Si el código se ejecuta desde un módulo General, la sintaxis es la siguiente:
UserFormName.Controlname.Property = Valor
Por ejemplo, si desea establecer la propiedadText de un control TextBox denominado TextBox1 en un formulario de usuario denominado UserForm1 al valor de Bob, utilice el código siguiente:
UserForm1.TextBox1.Text = "Bob"
Si el código está en un procedimiento que se inicia un evento de un control o el formulario de usuario, no es necesario hacer referencia al nombre de UserForm. En su lugar, utilice el código siguiente:
TextBox1.Text = "Bob"
Cuando se adjunta un código a un objeto, el código está asociado a uno de los eventos de ese objeto. En muchos de los ejemplos de este artículo, adjuntar código al eventoClick del objeto CommandButton .

Controles Label

Los controles Label 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 de etiqueta incluyen la propiedad Font y la propiedad ForeColor .

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

Para utilizar la instrucción WITH para cambiar las propiedades de un control Label , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 abrir la ventana de código para el formulario UserForm.
  7. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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 RunSub/UserForm.
  9. Haga clic en el botón de comando.
El texto "Este es ejemplo de etiqueta 1" aparece en el control de etiqueta en negrita Times New Roman con un tamaño 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 .

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

Si establece la propiedad PasswordChar de un control TextBox , se convierte en un control "masked edit". Todos los caracteres que se escriban en el control de TextBox se sustituye visualmente por el carácter que se especifique. Para utilizar un control TextBox para validar una contraseña, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 abrir la ventana de código para el formulario UserForm.
  9. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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 RunSub/UserForm.
  11. Escriba la contraseña formulario de usuario en el control TextBox .
  12. Haga clic en el control CommandButton.
En este ejemplo, la contraseña es "userform". Si escribe una contraseña incorrecta, aparecerá un cuadro de mensaje que indica que la contraseña es incorrecta, se desactiva el control de TextBox y, a continuación, puede volver a escribir la contraseña. Al escribir una contraseña correcta, recibirá un mensaje de bienvenida, y se cierra el formulario UserForm.

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
213555 XL2000: Ninguna propiedad de validación de datos para UserForm TextBoxes

Controles CommandButton

Puede utilizar un control de CommandButton para iniciar un procedimiento de VBA. El procedimiento VBA normalmente está asociado al evento Click del control CommandButton . Para utilizar un control de CommandButton que se ejecuta un procedimiento cuando se produce el evento Click , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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. Haga doble clic en el CommandButton control todisplay la ventana de código para el formulario UserForm.
  6. En la ventana código, escriba el siguiente código:
    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 RunSub/UserForm.
El color de fondo del control CommandButton1 cambia cada vez que se haga 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: Al hacer clic en botón de cancelación puede descartar el UserForm
213743 XL2000: Cómo configurar el botón de comando predeterminado en un formulario de usuario

Controles ListBox

El propósito del control ListBox es presentar al usuario una lista de elementos entre los que es posible seleccionar. Puede almacenar la lista de elementos de un control de ListBox en una hoja de cálculo de Excel. Para rellenar un control ListBox con un rango de celdas en una hoja de cálculo, utilice la propiedad RowSource . Cuando se utiliza la propiedad SelecciónMúltiple (MultiSelect) , puede configurar un control ListBox para aceptar las selecciones múltiples.

Cómo obtener el elemento 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 selección simple, siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  4. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  5. Agregar un control ListBox en el formulario UserForm.
  6. Haga doble clic en el control ListBox control todisplay la ventana de código para el control ListBox .
  7. En la ventana código, escriba el siguiente código para el evento Click de ListBox1 :
    Private Sub ListBox1_Click()
    
        MsgBox ListBox1.Value
    
    End Sub 
  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.

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

Para determinar los elementos seleccionados en una control ListBox de selección múltiple, debe recorrer todos los elementos de la lista y, a continuación, consultar la propiedad Selected . Para devolver los elementos seleccionados en una control ListBox de selección múltiple, siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  4. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  5. Agregar 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	   1 - frmMultiSelectMulti
       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 código para el formulario UserForm.
  10. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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 RunSub/UserForm.
  12. Seleccione uno o más elementos en la lista.
  13. Haga clic en CommandButton1.
Después de hacer clic en CommandButton1, todos los elementos que ha seleccionado en el control ListBox aparece en un cuadro de mensaje independiente. Después de que aparecen todos los elementos seleccionados en un cuadro de mensaje, el formulario de usuario se cierra automáticamente.

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

Para utilizar la propiedad OrigenDeLaFila (RowSource) para llenar un control ListBox desde un rango de celdas en una hoja de cálculo, siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  4. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  5. Agregar 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 código para el formulario UserForm.
  8. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()
        ListBox1.RowSource = "=Sheet1!A1:A5"
    End Sub 
  9. En el menú Ejecutar , haga clic en RunSub/UserForm.

    NotaListBox1 no contiene ningún valor.
  10. Haga clic en CommandButton1.
ListBox1 se rellena con los valores de a1: a5 de las celdas de Sheet1.

Cómo llenar un control ListBox con los valores de una matriz

En este ejemplo se muestra cómo rellenar un control ListBox con una variable de matriz. Debe asignar los valores de la matriz al elemento de control de ListBox de uno en uno. 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 abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Agregar un control ListBox en el formulario UserForm.
  5. En el menú Insertar , haga clic enmódulo para insertar una hoja de módulo.
  6. En la ventana código, escriba el siguiente código:
    Sub PopulateListBox()
    
        Dim MyArray As Variant
        Dim Ctr As Integer
        MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")
        
        For Ctr = LBound(MyArray) To UBound(MyArray)
            UserForm1.ListBox1.AddItem MyArray(Ctr)
        Next
        
        UserForm1.Show
    
    End Sub 
  7. En el menú Herramientas , haga clic enMacros, haga clic en PopulateListBoxy, a continuación, haga clic enEjecutar.
El procedimiento PopulateListBox crea una matriz y, a continuación, agrega los elementos de la matriz al control ListBox utilizando el método AddItem . A continuación, aparecerá el formulario UserForm.

Cómo utilizar un rango horizontal de celdas en una hoja de cálculo para llenar un control ListBox

Si establece la propiedad OrigenDeLaFila (RowSource) de un control ListBox en un rango horizontal de celdas, sólo el primer valor aparece en el control ListBox .

Para rellenar un control ListBox desde un rango horizontal de celdas utilizando el método AddItem , siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  4. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  5. Agregar un control ListBox en el formulario UserForm.
  6. En el menú Insertar , haga clic enmódulo para insertar una hoja de módulo.
  7. En la ventana código, escriba el siguiente código:
    Sub PopulateListWithHorizontalRange()
    
        For Each x In Sheet1.Range("A1:E1")
            UserForm1.ListBox1.AddItem x.Value
        Next
        
        UserForm1.Show
    
    End Sub
  8. En el menú Herramientas , haga clic enMacros, haga clic enPopulateListWithHorizontalRangey, a continuación, haga clic enEjecutar.
El procedimiento de macro ejecuta un bucle en el apartado a1: las celdas E5 en Sheet1, agregando los valores a ListBox1 de uno en uno.

NotaListBox1 no está enlazado a las celdas a1: E5 en Sheet1.

Cómo devolver varios valores de un control ListBox enlazado a varias columnas de datos

Puede dar formato a los controles de 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 devolver varios valores desde el elemento seleccionado en la lista, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. Escriba los datos siguientes en las celdas que están onSheet1 indicado:

    Contraer esta tablaAmpliar esta tabla
    A1: añoB1: regiónC1: ventas
    A2: 1996 B2: norteC2: 140
    A3: 1996B3: surC3: 210
    A4: 1997B4: norteC4: 190
    A5: 1997B5: surC5: 195
  3. En el menú Herramientas , señaleMacroy, a continuación, 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. Agregar un control ListBox en el formulario UserForm.
  7. Haga clic en el cuadro de listay, a continuación, haga clic enPropiedades.
  8. Escriba o seleccione los valores que se indican para las propiedades siguientes del control ListBox que se enumeran en la tabla siguiente:
       Property       Value
       ----------------------------
       BoundColumn     1
       ColumnCount     3
       ColumnHeads     True
       RowSource       Sheet1!A2:A5
  9. Haga doble clic en el control ListBox control todisplay la ventana de código para el control ListBox .
  10. En la ventana código, escriba el siguiente código:
    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).Value
        Val3 = SourceRange.Offset(ListBox1.ListIndex, 2).Resize(1, 1).Value
        
        Label1.Caption = Val1 & " " & Val2 & " " & Val3
    
    End Sub
  11. En el menú Ejecutar , haga clic en RunSub/UserForm.
Al hacer clic en una entrada en el control ListBox , la etiqueta se cambia para mostrar los tres de los elementos de esa entrada.

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

Para quitar todos los elementos de un control ListBox enlazado a una hoja de cálculo, desactive el valor que se almacena en la propiedad OrigenDeLaFila (RowSource) . Para quitar elementos de un control ListBox enlazado a una hoja de cálculo, siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  4. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  5. Agregar 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 código para el control CommandButton .
  10. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()
    
        ListBox1.RowSource = ""
    
    End Sub
  11. En el menú Ejecutar , haga clic en RunSub/UserForm.

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

Cómo quitar todos los elementos de un control ListBox que no está enlazado a una hoja de cálculo

No hay ningún comando VBA único que quite todos los elementos de un control de ListBox si la lista no está enlazada a una hoja de cálculo. Para quitar todos los elementos de un control de ListBox relleno a partir de una matriz de Visual Basic, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Agregar un control ListBox en el formulario UserForm.
  5. En el menú Insertar , haga clic enmódulo para insertar una hoja de módulo.
  6. En la ventana código, escriba el siguiente código:
    Sub PopulateListBox()
    
        Dim MyArray As Variant
        Dim Ctr As Integer
        MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")
        
        For Ctr = LBound(MyArray) To UBound(MyArray)
            UserForm1.ListBox1.AddItem MyArray(Ctr)
        Next
        
        UserForm1.Show
    
    End Sub 
  7. Agregue un control CommandButton en el formulario UserForm.
  8. Haga doble clic en el CommandButton control todisplay la ventana de código para el control CommandButton .
  9. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()
    
        For i = 1 To ListBox1.ListCount
            ListBox1.RemoveItem 0
        Next I
    
    End Sub
  10. En el menú Herramientas , haga clic enMacros, haga clic en PopulateListBoxy, a continuación, haga clic enEjecutar.

    El control ListBox se llena y, a continuación, aparecerá el formulario UserForm.
  11. Haga clic en CommandButton1.
Se quitan todos los elementos 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 OFF: Cómo agregar datos a un control ComboBox o ListBox en Excel o Word
211446 XL2000: La propiedad TextColumn muestra sólo la primera columna
211896 XL2000: Cómo simular la combinación del control de edición de la lista para los formularios de usuario
211899 XL2000: Problemas configuración de encabezados de columna en el control ListBox
213721 XL2000: Cómo quitar todos los elementos de un control ListBox o ComboBox
213722 XL2000: Cómo utilizar la propiedad TextColumn
213723 XL2000: Cómo devolver valores desde un cuadro de lista que muestra varias columnas
213746 XL2000: Cómo rellenar el control cuadro de lista con varios rangos
213748 XL2000: Cómo llenar un cuadro de lista basándose en otro cuadro de lista
213752 XL2000: Utiliza el método AddItem provoca un error cuando OrigenDeLaFila (RowSource) está enlazado a datos
213756 XL2000: Usando el método RemoveItem con un control ListBox o ComboBox
213759 XL2000: Cómo determinar los elementos seleccionados en un cuadro de lista

Controles ComboBox

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

Nota Todos los ejemplos de la sección anterior para el control ListBox pueden aplicarse también al control ComboBox , excepto el ejemplo "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 cuadro combinado no está enlazado a una hoja de cálculo

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 escribió en el control ComboBox , si el control de ComboBox no está enlazado a la hoja de cálculo, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 enmódulo para insertar una hoja de módulo.
  6. En la ventana código, escriba el siguiente código:
    Sub PopulateComboBox()
    
         Dim MyArray As Variant
         Dim Ctr As Integer
         MyArray = Array("Apples", "Oranges", "Peaches", "Bananas", "Pineapples")
        
         For Ctr = LBound(MyArray) To Ubound(MyArray)
             UserForm1.ComboBox1.AddItem MyArray(Ctr)
         Next
        
         UserForm1.Show
    
     End Sub
  7. Agregue un control CommandButton en el formulario UserForm.
  8. Haga doble clic en el CommandButton control todisplay la ventana de código para el control CommandButton .
  9. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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, 0)) Then
             ' add the new value to the list.
             ComboBox1.AddItem ComboBox1.Value
         End If
    
     End Sub
  10. En el menú Herramientas , haga clic enMacros, haga clic en PopulateListBoxy, a continuación, haga clic enEjecutar.

    Se rellena el control ComboBox , y, a continuación, 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 ha escrito ahora aparece al final de la lista.

Cómo agregar un nuevo elemento a la lista si el control ComboBox es dependiente de una hoja de cálculo

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 ComboBox a la lista, siga estos pasos:
  1. Inicie Excel y 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 continuación, haga clic en definir.

    En el cuadronombres en el libro , escriba ListRange y, a continuación, haga clic en ACEPTAR. 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 cálculo.
  5. En el menú Herramientas , señaleMacroy, a continuación, 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 de ComboBox1, escriba ¡ Hoja1!ListRange como la propiedadOrigenDeLaFila (RowSource) .
  9. Agregue un control CommandButton en el formulario UserForm.
  10. Haga doble clic en el CommandButton control todisplay la ventana de código para el control CommandButton .
  11. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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 = "ListRange"
            ' Add the new item to the end of the list on the worksheet.
            SourceData.Offset(SourceData.Rows.Count, 0).Resize(1, 1).Value _
             = ComboBox1.Value
            ' Reset the list displayed in the ComboBox.
            ComboBox1.RowSource = Range("listrange").Address(external:=True)
        End If
    
    End Sub
  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 amplía para incluir las celdas a1: a6.

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

En ocasiones, puede ser útil mostrar la lista de un control ComboBox cuando aparece por primera vez un formulario UserForm. En el ejemplo siguiente se utiliza el evento Activate del UserForm. Para mostrar la lista de un control ComboBox , siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, 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 de ComboBox1, escriba ¡ Hoja1!A1: A5 como la propiedadOrigenDeLaFila (RowSource) .
  7. Haga doble clic en el UserForm para mostrar la ventana de theCode para el UserForm.
  8. En la ventana código, escriba el siguiente código para el evento Click del botón de comando :
    Private Sub UserForm_Activate()
    
               ComboBox1.DropDown
    
           End Sub
  9. En el menú Ejecutar , haga clic en RunSub/UserForm.
Aparecerá el formulario UserForm de Sheet1 y se puede ver la lista de ComboBox1.

Cómo mostrar la lista de un control ComboBox cuando realice una selección en otro control de cuadro combinado

Para mostrar la lista de un control ComboBox automáticamente cuando se realiza una elección en otro control de ComboBox , siga estos pasos:
  1. Inicie Excel y 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 , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  4. En el menú Insertar , haga clic enmódulo.
  5. En la ventana de código del módulo, escriba el siguiente código:
    Sub DropDown_ComboBox()
    
        UserForm1.ComboBox2.DropDown
    
    End Sub
  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 de ComboBox1, escriba ¡ Hoja1!A1: A5 como la propiedadOrigenDeLaFila (RowSource) .
  9. Haga doble clic en el control ComboBox para abrir ventana de código para el control ComboBox .
  10. En la ventana de código para el control de cuadro combinado , escriba el siguiente código para el evento Click del control ComboBox :
    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 ¡ 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 , aparecerá automáticamente la lista de ComboBox2 .

Para obtener información adicional acerca del control de cuadro combinado, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
161598 OFF: Cómo agregar datos a un control ComboBox o ListBox en Excel o Word
211446 XL2000: La propiedad TextColumn muestra sólo la primera columna
211899 XL2000: Problemas configuración de encabezados de columna en el control ListBox
213717 XL2000: Error de tiempo de ejecución mediante el método DropDown con un control ComboBox
213718 XL2000: Cómo mostrar una lista de ComboBox cuando un UserForm se muestra
213721 XL2000: Cómo quitar todos los elementos de un control ListBox o ComboBox
213722 XL2000: Cómo utilizar la propiedad TextColumn
213752 XL2000: Utiliza el método AddItem provoca un error cuando enlazado a datos es OrigenDeLaFila (RowSource)
213756 XL2000: Usando el método RemoveItem con un control ListBox o ComboBox

Control Frame

Utilizar un control Frame para agrupar elementos relacionados lógicamente en un UserForm. Controles Frame se utilizan con frecuencia para agrupar controles OptionButton .

Cómo recorrer todos los controles de un control Frame

Utilizar un For Each...Siguiente bucle para acceder a todos los controles de un control Frame , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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. Agregue un control OptionButton para el 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 de theCode para el control Frame .
  7. En la ventana código, escriba el siguiente código para el evento Click de marco :
    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 RunSub/UserForm.
  9. En el formulario de usuario, haga clic en el control Frame.
La primera vez que haga clic en el control de Frame , no estarán disponibles todos los controles en el control Frame . Si hace clic en el control Frame de nuevo, volverán a estarán disponibles los controles.

Control OptionButton

Puede utilizar grupos de controles OptionButton para realizar una selección entre un grupo de opciones. Puede utilizar cualquiera de las siguientes técnicas para controles de OptionButton del grupo:
  • Control de marco
  • Propiedad GroupName
Nota El valor es True , el valor y el valor de indican que se ha seleccionado un control OptionButton . El valor False , el valor No y el valor de indican que no está seleccionado un control OptionButton .

Cómo determinar el control OptionButton que se selecciona cuando se 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 aplicando un bucle en todos los controles en el control Frame y comprobando la propiedad Value de cada control. Para determinar el control OptionButton seleccionado, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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. Agregue un control OptionButton para el control Frame .

    Repita este paso para agregar dos controles OptionButton más 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 código para el formulario UserForm.
  8. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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 RunSub/UserForm.
  10. En el formulario de usuario, haga clic en un control OptionButton y, a continuación, haga clic enCommandButton1.
Aparecerá un mensaje que contiene el título del control OptionButton actualmente seleccionado.

Cómo determinar el control OptionButton seleccionada

El siguiente ejemplo sirve para determinar el control OptionButton que se ha seleccionado en el grupo 1. Para crear un UserForm que tiene dos grupos de controles OptionButton , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 más 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 del marco .
  10. Haga doble clic en el CommandButton control todisplay la ventana de código para el formulario UserForm.
  11. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    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 control.
             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 RunSub/UserForm.
  13. En el formulario de usuario, haga clic en un control OptionButton del grupo 1 y, a continuación, haga clic enCommandButton1.
Aparecerá un mensaje que contiene el título del control OptionButton que está seleccionado actualmente.

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 el botón de opción

Control CheckBox

Puede utilizar un control de CheckBox para indicar un valor true o false. Un control de CheckBox que aparece con una marca de verificación indica un valor True. Una CheckBox que aparece con ninguna marca de verificación indica el valor False. Si el valor de la propiedad TripleState es True, un control de casilla CheckBox también puede tener un valor Null. Un control de CheckBox que tiene un valor null para aparece como no disponible.

Nota El valor On el valor Yes y el valor True indican que un control CheckBox está activado. El valor Off , el valor No y el valor False indican que un control de CheckBox está desactivado.

Cómo comprobar el valor de un control CheckBox

Para utilizar la propiedad Value para devolver el valor actual de un control de CheckBox , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 en el formulario UserForm.
  5. En la lista de propiedades de CheckBox1, seleccione True como la propiedad TripleState .
  6. Haga doble clic en la casilla de verificación control todisplay la ventana de código para el control de casilla de verificación .
  7. En la ventana código, escriba el siguiente código en el evento Change de CheckBox1 :
    Private Sub CheckBox1_Change()
    
        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 RunSub/UserForm.
Al hacer clic en el control de CheckBox , el título 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 botón está seleccionado y False cuando no se selecciona el botón. Si el valor de la propiedad TripleState es True, un control ToggleButton también puede tener un valor Null. Un control ToggleButton que tiene un valor null parece que no está disponible.

Nota El valor On el valor Yes y el valor True indican que un control ToggleButton está activado. El valor False , el valor No y el valor de indican que un control ToggleButton no está activado.

Cómo obtener el valor de un control ToggleButton

Para obtener el valor de un control ToggleButton , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 abrir la ventana de código para el control ToggleButton .
  7. En la ventana código, escriba el siguiente código para el evento ToggleButton1Click :
    Private Sub ToggleButton1_Click()
    
        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 RunSub/UserForm.
Al hacer clic en el control ToggleButton , el color de fondo de UserForm cambia.

Cómo crear un grupo de controles ToggleButton mutuamente exclusivos

Este ejemplo utiliza el evento MouseUp para establecer una variable y llama al procedimiento ExclusiveToggleButtons . El procedimiento ExclusiveToggleButtons determina el control ToggleButton seleccionado y, a continuación, cancela las demás. Para crear un grupo de controles ToggleButton mutuamente exclusivos, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enmódulo.
  4. En la ventana de código del módulo, escriba el siguiente código:
    ' Variable that holds the name of the ToggleButton that was clicked.
    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
  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 más en el control Frame .
  8. Haga doble clic en el control Frame para visualizar ventana de código para el formulario UserForm.
  9. En la ventana de código del módulo, escriba el siguiente procedimiento el evento ToggleButton MouseUp :
    Private Sub ToggleButton1_MouseUp(ByVal Button As Integer, _
                  ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
           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 As Single)
    
            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 As Single)
    
            clicked = ToggleButton3.Name
            Application.OnTime Now, "ExclusiveToggleButtons"
    
        End Sub
  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 distintos conjuntos de información para un conjunto de controles.

Cómo controlar mediante programación de un control TabStrip

Para cambiar la propiedad BackColor de un control de Image basada en la pestaña que se ha seleccionado, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 al UserForm.
  5. Agregar un control de imagen que cubre la base del control TabStrip , pero no cubre las fichas.
  6. En el panel Propiedades Image1, escriba& H000000FF & en la propiedad BackColor .
  7. Haga doble clic en el control TabStrip para abrir ventana de código del control TabStrip .
  8. En la ventana código, escriba el siguiente código en el evento Change TabStrip1 :
    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 control to Red.
                Image1.BackColor = RGB(255, 0, 0)
            Case 1
                ' If Tab2 is selected, change the color of Image control to Green.
                Image1.BackColor = RGB(0, 255, 0)
        End Select
    
    End Sub
  9. En el menú Ejecutar , haga clic en RunSub/UserForm.
El color del control image cambia dependiendo de la página en que el control TabStrip esté activo.

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 utilizar el control TabStrip en un formulario de usuario

Control multiPage

Utilice un control MultiPage para trabajar con una gran cantidad de información que puede ordenar en varias categorías. Un control MultiPage está formado por uno o más objetos Page que contienen un conjunto diferente de controles. Puede establecer mediante programación la página activa estableciendo la propiedad Value del control MultiPage .

Cómo controlar mediante programación de un control MultiPage

Para agregar un control MultiPage y controlarlo mediante una macro, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Agregue un control MultiPage en el formulario UserForm.
  5. Agregue un control Label a la página 1 en el control MultiPage .
  6. Agregue un control TextBox en Page1 del control MultiPage .
  7. En el control de varias páginas , haga clic en la página 2y, a continuación, repita los pasos 5 6 para agregar un control Label y un control TextBox .
  8. Haga doble clic en el control MultiPage en Abrir ventana de código del control MultiPage .
  9. En la ventana código, escriba el siguiente código en el evento Change de MultiPage1 :
    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 en el evento UserForm Initialize :
    Private Sub UserForm_Initialize()
    
        ' Force Page1 to be active when UserForm is displayed.
        MultiPage1.Value = 0
        Label1.Caption = ""
    
    End Sub
  11. En el menú Ejecutar , haga clic en RunSub/UserForm.

    En el control TextBox Page1, escriba Prueba. Cuando youclick la ficha Page2 , TextBox2 está desactivada, y cambia el título de Label2 a la entrada que ha realizado en TextBox1 en Página1 ("prueba").

Cómo 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 UserForms. En este ejemplo se manipula un control MultiPage que tiene tres páginas. Un procedimiento que está asociado al evento Initialize del UserForm deshabilita Page2 y Page3 y fuerza que Page1 del control MultiPage esté activo.

Nota Al indizar las páginas de un control MultiPage mediante el uso de la colección de Pages , la primera página de la colección es la página cero. Este procedimiento también se establece el título de los controles CommandButton y deshabilita el <> botón.

Nota El procedimiento que está asignado al evento Click de CommandButton1 controla la funcionalidad de la <> botón. El procedimiento que está asignado al evento Click de CommandButton2 controla la funcionalidad de la siguiente > botón. Para crear una interfaz de asistente mediante el uso de un control MultiPage , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Agregue un control MultiPage en el formulario UserForm.
  5. Haga clic en la ficha de la página 1 y, a continuación, haga clic enNueva página para agregar la página 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 UserForm para abrir el Codewindow para el UserForm.
  8. En la ventana código, escriba el siguiente código en 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 active...
                With MultiPage1
                    .Pages(0).Enabled = True       ' Enable Page1.
                    .Value = MultiPage1.Value - 1  ' Move back 1 page.
                    .Pages(1).Enabled = False      ' Disable Page2.
                End With
                CommandButton1.Enabled = False     ' Disable Back button.
                
            Case 2                                 ' If Page3 is active...
                With MultiPage1
                    .Pages(1).Enabled = True       ' Enable Page2.
                    .Value = MultiPage1.Value - 1  ' Move back 1 page.
                    .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 active...
                With MultiPage1
                    .Value = MultiPage1.Value + 1   ' Move forward 1 page.
                    .Pages(1).Enabled = True        ' Enable Page2.
                    .Pages(0).Enabled = False       ' Disable Page1.
                End With
                CommandButton1.Enabled = True       ' Enable Back button.
                
            Case 1                                  ' If Page2 is active...
                With MultiPage1
                    .Value = MultiPage1.Value + 1   ' Move forward 1 page.
                    .Pages(2).Enabled = True        ' Enable Page3.
                    .Pages(1).Enabled = False       ' Disable Page2.
                End With
                CommandButton2.Caption = "Finish"   ' Change Next button to Finish.
                
            Case 2                                  ' If Page3 is active...
                MsgBox "Finished!"                  ' User is Finished.
                Unload Me                           ' Unload the UserForm.
        End Select
    
    End Sub
    
  9. En el menú Ejecutar , haga clic en RunSub/UserForm.
Al hacer clic en siguiente >, página 2 se activa y el <> botón esté disponible. Al hacer clic en siguiente > una segunda vez, se activa la página 3 y el título de CommandButton2 cambia a "Finalizar".

Control ScrollBar

Puede utilizar un control de ScrollBar cuando desea cambiar el valor que se muestra por otro control, como un control Label .

Cómo cambiar un control Label que se basa en el valor de un control ScrollBar

Para cambiar la propiedad Caption de un control Label a la configuración actual de la propiedad Value de un control de ScrollBar , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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.
  5. Agregue un control Label al UserForm.
  6. Haga doble clic en el control de barra de desplazamiento para abrir ventana de código para el control de barra de desplazamiento .
  7. En la ventana código, escriba el siguiente código en el evento Change de ScrollBar1 :
    Private Sub ScrollBar1_Change()
    
        Label1.Caption = ScrollBar1.Value
    
    End Sub
  8. En el menú Ejecutar , haga clic en RunSub/UserForm.
Cuando se desplaza utilizando el control ScrollBar , Label1 se actualiza con el valor actual del control ScrollBar .

Control SpinButton

Un control SpinButton , al igual que un control de ScrollBar , se utiliza con frecuencia para incrementar o reducir el valor de otro control, como un control Label . La propiedad SmallChange determina cuánto cambia el valor de un control SpinButton al hacer clic en él.

Cómo agregar un control SpinButton que aumenta o disminuye una fecha en la que se almacena en un control TextBox

Para agregar un control SpinButton que aumenta o disminuye una fecha en la que se almacena en un control de cuadro de texto , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Agregue un control SpinButton al UserForm.
  5. Agregue un control TextBox en el formulario UserForm.
  6. Haga doble clic en el control SpinButton control abrir la ventana de código del control SpinButton .
  7. En la ventana código, escriba el siguiente código para el evento SpinUp SpinButton1 :
    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 en el evento UserForm Initialize :
    Private Sub UserForm_Initialize()
    
        TextBox1.Text = Date
    
    End Sub
    
  10. En el menú Ejecutar , haga clic en RunSub/UserForm.
Cuando aparezca UserForm, la fecha actual aparece en TextBox1. Al hacer clic en el control SpinButton , la fecha se incrementa o reduce en un día.

En este ejemplo, si cambia la propiedad SmallChange de SpinButton1, no afecta al número de días por el que se modifica la entrada en TextBox1 al hacer clic en SpinButton1. El número de días se determina únicamente por el procedimiento que adjunta a la de SpinButton1eventos SpinDown y SpinUp .

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 de Visual Basic para utilizar un botón de número con una fecha

Control RefEdit

El control RefEdit imita el comportamiento de los cuadros de referencia que están integradas en Excel. Puede utilizar la propiedad Value para obtener la dirección de la celda actual que se almacenan en un control RefEdit .

Cómo rellenar un rango de celdas según el intervalo que seleccione con el control RefEdit

Para utilizar el control RefEdit para rellenar las celdas, siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, 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 al UserForm.
  5. Agregue un control CommandButton en el formulario UserForm.
  6. Haga doble clic en el CommandButton control abrir la ventana de código para el control CommandButton .
  7. En la ventana código, escriba el siguiente código para el evento Click de CommandButton1 :
    Private Sub CommandButton1_Click()
    
        Dim MyRange As String
        MyRange = RefEdit1.Value
        Range(MyRange).Value = "test"
        Unload Me
    
    End Sub
  8. En el menú Ejecutar , haga clic en RunSub/UserForm.

    El UserFormappears.
  9. Haga clic en el botón en el control RefEdit .

    Observe que se contrae el UserForm.
  10. Seleccione un rango de celdas, como a1: a5 y, a continuación, haga clic en Examinar en el control RefEdit para expandir el UserForm.
  11. Haga clic en CommandButton1.
El formulario UserForm se cierra y las celdas que ha seleccionado ahora contienen la palabra "prueba".

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 utilizar el control RefEdit con un formulario de usuario

Control Image

Es el propósito del control Image mostrar una imagen en un formulario de usuario. 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 la imagen que desea cargar al hacer clic en el control Image , siga estos pasos:
  1. Inicie Excel y abra un nuevo libro en blanco.
  2. En el menú Herramientas , señaleMacroy, a continuación, haga clic en BasicEditor Visual.
  3. En el menú Insertar , haga clic enUserForm para insertar un UserForm en el libro.
  4. Agregar 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 código, escriba el siguiente código para el evento Click de Image1 :
    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 Open")
        
        ' 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 RunSub/UserForm.

    Aparecerá el formulario UserForm.
  8. Haga clic en el control de imagen .

    Cuando haga clic en el control de imagen , el boxappears de diálogo Seleccionar imagen de apertura , y, a continuación, puede seleccionar un archivo de mapa de bits para insertar en decontrol.
Para obtener información adicional sobre el control Imagen, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
213732 XL2000: Mediante la función LoadPicture con un control de imagen

Información adicional

El Examinador de objetos

Una lista completa de todas las propiedades y métodos para un comando específico está disponible en el Examinador de objetos. Para encontrar esta información en Excel, siga estos pasos:
  1. En el menú Herramientas , señaleMacroy, a continuación, 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 continuación, haga clic en Buscar.
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 Ayudante de Office o el Asistente para Ayuda 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 el equipo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
231946 OFF2000: Cómo agregar o quitar un único programa de Office o un componente

Propiedades

Id. de artículo: 829070 - Última revisión: lunes, 03 de marzo de 2014 - Versión: 18.0
La información de este artículo se refiere a:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2010
  • Microsoft Office Excel 2007
Palabras clave: 
kbprogramming kbfunctions kbhowtomaster kbhowto kbmt KB829070 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 829070

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com