Mostrar el valor seleccionado de un ListBox en Excel vba
Le he desarrollado un pequeño ejemplo donde vemos la manera de obtener el valor de un Item seleccionado de un ListBox. Recordemos que un ListBox es un control ActiveX el cual nos permitirá tener una lista de valores, la cual podemos alimentarla a nuestro gusto.
► Si deseas conocer más ejemplos con el control ListBox da clic aquí.
Este ejemplo contiene los siguientes controles:
- Formulario (UserForm). No es precisamente un control.
- Un cuadro de lista (ListBox).
- Dos botones (CommandButton).
Cómo funciona
Nuestro formulario se llama UserForm1, el cual primero llamaremos con la siguiente instrucción:
Private Sub CommandButton1_Click()
'Botón Formulario de Hoja1 ' UserForm1.Show ' End Sub
Al mostrarte el formulario veremos dos botones. Si presionamos el que dice Llenar lista, el ListBox se llenará con el nombre de las hojas del archivo activo, como se muestra en la Figura 1.
Figura 1. Alimentar Cuadro de lista.
El código utilizado para llenar la lista es el siguiente:
'Botón Llenar lista Private Sub CommandButton1_Click() ' 'Recorremos los nombres de las hojas For Each Hoja In ActiveWorkbook.Sheets ' Me.ListBox1.AddItem Hoja.Name ' Next Hoja ' End Sub
Con el nombre de las hojas en el ListBox, ahora podemos proceder a elegir cualquier elemento de la lista y presionando el botón Hoja elegida, se nos mostrará un cuadro de mensaje con el nombre elegido. Como en la Figura 2.
Figura 2. Mostrar valor de Item seleccionado en ListBox.
El siguiente código hará que mostremos el valor elegido:
'Botón Hoja elegida Private Sub CommandButton2_Click() ' 'Declaramos variables Dim Cuenta As Integer Dim Numero As Integer Dim j As Integer Dim i As Integer ' Cuenta = Me.ListBox1.ListCount ' 'Validamos que haya un elemento seleccionado. For j = 0 To Cuenta - 1 If Me.ListBox1.Selected(j) = True Then Numero = Numero + 1 End If Next j ' 'La hoja seleccionada se pasará al ListBox de hojas visibles. For i = 0 To Cuenta - 1 If Me.ListBox1.Selected(i) = True Then MsgBox Me.ListBox1.List(i), vbInformation, "EXCELeINFO" End If Next i ' End Sub
Anexos
Si deseas hacer tus propias pruebas en el siguiente link podrás descargar el ejemplo: