¿Qué es un Listbox?
Un cuadro de lista es un elemento de control gráfico que le permite al usuario seleccionar uno o más elementos de una lista contenida dentro de un cuadro de texto estático de varias líneas.
¿Cómo hacer un Listbox en un Userform?
En el siguiente ejemplo mostraremos como pasar una lista de una hoja de excel hacia un Listbox en un formulario de Vba.
1)Tener la lista que se desea en una hoja de excel (con la estructura como se desea tener en la listbox)
2)Abrir en el excel el visual Basic (alt+f11)
3)Damos clic en insertar y seleccionamos userform
4)En el cuadro de herramientas seleccionamos cuadro lista y lo colocamos encima de la ventana del Userform(Lo ajustamos a un tamaño razonable que muestre los datos de nuestra lista en excel)
5)Damos doble click en el formulario(userform) para abrir la ventana de codificación.
6)Cambiamos el evento para esto le damos click al evento Initialize(para que cuando inicie el formulario se cargue los datos de la hoja1)
7)Empezamos la codificación:
Private Sub Userform_Initialize()
Me.Listbox1.Rowsource= "Hoja1!A2:C11" '(esto es para poner elementos de una hoja hacia nuestro listbox ("Me." hace referencia a nuestra hoja1)en este caso la hoja tiene como nombre Hoja1(Se podría omitir el uso del "Me.")
Me.Listbox1.ColumnCount=3 '(con esto ponemos el número de columnas que queremos que se muestren en el listbox)
Me.Listbox1.ColumnWidths=" 25;100;40" '(Con esto modificamos el ancho de las columnas a medida que nuestro Listbox se vea de una manera ordenada,el 1er valor hace referencia la primera columna ,el 2do a la segunda columna y el 3ro a la tercera columna)
Me.Listbox1.ColumnHeads=True '(esto hace que la listbox tome los titulos de las cabeceras de la lista en excel y los muestre)
End Sub
8)Damos F5 para correr la programación y ver nuestro listbox
25/03/2019 a las 7:00 am
y si queremos que las opciones desplegadas en el listbox, sea el contenido de una tabla creada manualmente. Por ejemplo Dim a (5) as string. a(0)="hola", a(1)="adios"...
26/06/2019 a las 1:32 pm
Muy buena explicación, fácil de entender y de realizar. No soy un experto programando, aún estoy iniciando; tuve este problema de cómo llenar un ListBox, había buscado en muchas páginas y todas tenían cosas que no necesitabas y te explicaban cosas que no necesitas saber aún.
Pero encontré tu publicación y es exactamente lo que necesitaba, sin más ni menos.
Excelente aporte
06/10/2019 a las 5:01 pm
hola, muchas gracias, me sirvio mucho, y ahora me surge una duda, si el valor introducido no existe dentro de la tabla que seleccionamos, como advertimos que es un valor no asignado?
20/10/2019 a las 9:18 pm
BUENAS NOCHES ,TENGO LA SIGUIENTE PREGUNTA,¿SE PUEDE MOSTRAR EL VALOR DE UNA VARIABLE DENTRO DE UN LISTBOX?
15/12/2019 a las 2:47 pm
una serie de TextBox1...2...3...n, con una serie de valores
si quiero pasar los datos a variables cambiando los nombres de campo en un bucle for por ejemplo. ¿Cómo se hace?...acompaño planteamiento.
For a=1 to 100
Range(1, a)=Textbox_a
next a
17/03/2020 a las 11:50 pm
No me funciona "Could not set the RowSource, Invalid property value"
07/04/2020 a las 12:50 pm
tengo un listbox donde cargo mis datos que estan en una TABLA, cuando digo tabbla hablo de una con nombre y formato tabla. el tema es que los cargo bien, pero deseo poder modificar los datos. yo lo he hecho pero nunca cuando la tabla tiene nombre y forma.
17/12/2021 a las 12:19 pm
Private Sub UserForm_Initialize()
With ListBox1
.ColumnCount = 4
.ColumnWidths = "60 pt;60 pt;70 pt"
.ColumnHeads = True
End With
ListBox1.RowSource = "Tabla1"
End Sub
11/05/2020 a las 12:40 pm
Hola.
Como se puede llenar un Listbox, que esta por ejemplo en la Hoja 2 (sin utilizar formulario), pero sin utilizar la macro genérica, es decir, lo quiero hacer desde el apartado de programación de la misma Hoja 2. Por ejemplo, yo entro en la Hoja 2, al activarse la hoja, llena el listbox con unos datos que están en la Hoja 1, espero haber podido explicarlo bien, y que se entienda.
No se como llamar una macro que esta integrada en una hoja, el programa solo me deja hacer llamadas a macros que se encuentran en los modulos. Gracias
05/07/2020 a las 11:49 am
Tengo una tabla de donde levanto los datos para cargarlos en el listbox (Formato tabla con encabezado) y la propiedad columnheads =true.
Pero cuando carga los datos no me aparecen los encabezados. Alguien sabe cual puede ser la razon?.Muchas gracias
10/07/2020 a las 12:52 pm
Buen día
Tengo un formulario que llena ciertas tablas. Dentro del formulario tengo un listbox que carga la información de la tabla que esta enlazada, lo que quiero es que al ingresar un nuevo dato a esa tabla dentro del mismo formulario donde está el listbox , este se actualice automáticamente , unicamente con los datos que corresponde al consecutivo de este formulario
26/11/2020 a las 5:43 am
Así de simple, así de fácil diría un conocido personaje. Gracia
20/01/2021 a las 10:43 am
Hola
Tengo excel 2013
Veo que se puede usar esto para definir ancho de columnas de los listbox:
Me.Listbox1.ColumnWidths=" 25;100;40"
El tema es que yo tengo una sola columna y queria reducirla pero con ese código no pude. Puse :
Me.ListboxDia.ColumnWidths="5"
ListboxDia.ColumnWidths=" 5" y no me cambió nada.
Gracias
09/05/2021 a las 9:03 am
No te cambiara la columna debido a que solo tienes una, para ajustar el tamaño tienes que cambiar el tamaño completo del listbox, de lo contrario no lo podrás hacer, en otro caso puedes agregar una columna vacía para que te genere dos columnas y la primera puedas cambiar el ancho
11/03/2021 a las 9:04 am
Hola.
tengo una tabla de un club y quiero hacer un formulario para pasar lista. para eso necesito mostrar en el listbox solamente a los socios activos y posteriormente en el formulario filtrar dependiendo de si es clase de adultos o niños.
¿Cómo puedo haecr esto?
01/10/2021 a las 12:21 pm
Buenas, como puede pasar a un listbox solo las columnas que quiera de una tabla, es decir que solo quiero la 1 la 2 y la 4
11/01/2022 a las 1:32 pm
hola, mi listbox carga bien los datos pero necesito que una de las columnas tenga formato de porcentaje como puedo hacer? gracias de antemano.
19/03/2022 a las 7:18 pm
Hola , tengo una tabla con 13 columnas se ve perfecto en el lisbox, pero cuando la filtro y pongo Clear, se me borra el colunhead y me aparecen solo 10 columnas.
If Me.btniniciodeobra.value = True Then
On Error Resume Next
uf = hjiniciodeobra.Range("A" & Rows.Count).End(xlUp).Row
If txtfiltro = "" Then
Me.LISTA.RowSource = "inicio_de_obra"
Exit Sub
End If
hjiniciodeobra.AutoFilterMode = False
Me.LISTA = Clear
Me.LISTA.RowSource = Clear
Me.LISTA.ColumnCount = 13
Me.LISTA.ColumnHeads = True
For fila = 10 To uf
lote = hjiniciodeobra.Cells(fila, 2).value 'Variable para LOTE
visado = hjiniciodeobra.Cells(fila, 8).value 'Variable para VISADO
inicio = hjiniciodeobra.Cells(fila, 12).value 'Variable para INICIO
If UCase(lote) Like "*" & UCase(txtfiltro.value) & "*" Then
Me.LISTA.AddItem
Me.LISTA.List(X, 0) = hjiniciodeobra.Cells(fila, 1).value
Me.LISTA.List(X, 1) = hjiniciodeobra.Cells(fila, 2).value
Me.LISTA.List(X, 2) = hjiniciodeobra.Cells(fila, 3).value
Me.LISTA.List(X, 3) = hjiniciodeobra.Cells(fila, 4).value
Me.LISTA.List(X, 4) = hjiniciodeobra.Cells(fila, 5).value
Me.LISTA.List(X, 5) = hjiniciodeobra.Cells(fila, 6).value
Me.LISTA.List(X, 6) = hjiniciodeobra.Cells(fila, 7).value
Me.LISTA.List(X, 7) = hjiniciodeobra.Cells(fila, 8).value
Me.LISTA.List(X, 8) = hjiniciodeobra.Cells(fila, 9).value
Me.LISTA.List(X, 9) = hjiniciodeobra.Cells(fila, 10).value
Me.LISTA.List(X, 10) = hjiniciodeobra.Cells(fila, 11).value
Me.LISTA.List(X, 11) = hjiniciodeobra.Cells(fila, 12).value
Me.LISTA.List(X, 12) = hjiniciodeobra.Cells(fila, 13).value
X = X + 1
' '----------------------------------------------------------------------------------
'He añadido todo este fragmento para que me busque al mismo tiempo por visado.
End If
If UCase(visado) Like "*" & UCase(txtfiltro.value) & "*" Then
Me.LISTA.AddItem
Me.LISTA.List(X, 0) = hjiniciodeobra.Cells(fila, 1).value
Me.LISTA.List(X, 1) = hjiniciodeobra.Cells(fila, 2).value
Me.LISTA.List(X, 2) = hjiniciodeobra.Cells(fila, 3).value
Me.LISTA.List(X, 3) = hjiniciodeobra.Cells(fila, 4).value
Me.LISTA.List(X, 4) = hjiniciodeobra.Cells(fila, 5).value
Me.LISTA.List(X, 5) = hjiniciodeobra.Cells(fila, 6).value
Me.LISTA.List(X, 6) = hjiniciodeobra.Cells(fila, 7).value
Me.LISTA.List(X, 7) = hjiniciodeobra.Cells(fila, 8).value
Me.LISTA.List(X, 8) = hjiniciodeobra.Cells(fila, 9).value
Me.LISTA.List(X, 9) = hjiniciodeobra.Cells(fila, 10).value
Me.LISTA.List(X, 10) = hjiniciodeobra.Cells(fila, 11).value
Me.LISTA.List(X, 11) = hjiniciodeobra.Cells(fila, 12).value
Me.LISTA.List(X, 12) = hjiniciodeobra.Cells(fila, 13).value
X = X + 1
End If
12/04/2022 a las 8:36 am
hola buen dia estoy programado un registro de
formulario ,estoy intentando mostralo en una lista
estoy usando esde comandito ColumnCount
y me manda este error
Error de compilacion:
No se encontro el metodo o el dato miembro
ya hise un archivo antes y corre normal
en la misma hoja quiero repetir el programita
y no lo reconoce el comando ColumnCount
12/04/2022 a las 8:37 am
hola buen dia estoy programado un registro de
formulario ,estoy intentando mostralo en una lista
estoy usando esde comandito ColumnCount
y me manda este error
Error de compilacion:
No se encontro el metodo o el dato miembro
ya hise un archivo antes y corre normal
en la misma hoja quiero repetir el programita
y no lo reconoce el comando ColumnCount
Private Sub UserForm_Activate()
Me.txt_lista.RowSource = "Tabla1"
Me.txt_lista.ColumnCount = 5
facturas.Height = 210
End Sub
30/04/2022 a las 12:21 pm
Me gustó mucho de vera se merecen 10 estrella ayer probé este y de vera me salió haci mismo..
Muy buena explicación