Como filtrar en un listbox con un textbox
Por eje, siupngamos que tenemos 100 pacientes o clientes que se listan en un formulario, ok
Entonces se hace un poco dispendioso buscarlos a ojo,, aun que con el numero de indetinficacion se podría buscar manualmente con el buscarv pero seria en la hoja,,
¿Pero en el formulario se podrá hacer?
Es decir si hay más de 20 nombres que inician por V,, la idea es que al digitar las 3 primerasletras vaya filtrando hasta llegar al nombre desado o exactos
Adjunto imagen,, se muestra en la imagen que había muchos con la letra V,, pero se buscaba es al cliente de nombre VÍCTOR.. Como se aprecia se fueron filtrando hasta llegar al nombre buscado
2 Respuestas
Te adjunto tu libro de vuelta con los el filtro incluido y algún par de cosillas que te arregle en el código de cargar el listbox.
Descarga el libro de aquí: Descargar LIBRE.xslm
PD: Cuando valores la respuesta, por favor también valora la de Carlos Arrocha ya que su respuesta es correcta solo que él no tenía los datos de tu libro.
Muchas gracias andy pero lastimosamentes No me sirve,, lo que sucede es que no es así,,, por ejemplo: chay muchos lug, cierto, ok,, entonces cuando dígito LUG 11,, ESTE SE DEBERÍA RESUMIR Y quedar solo en el cuadro de list..
A ver como te explico,, no me envíes de nuevo el libro,, pues yo voy haciéndole modificaciones y actualizándolo,,
Es decir lo tengo adelantado, del ultimo que te envíe,, yo lo que busco es el código,,
aver,, creo que no me has entendido lo que estoy buscando en el listbox,,, mejor te paso un video de un experto (nunca contesta) y su código no lo he podido descifrar,, en el video muestra en los primeros 50segundos del video lo que estoy buscando,, es que no se cuadrar los offset ese es el problema,, en el video se explica como hacerlo, bueno no tienes por que ver todo el video,, con los primeros 50seg basta para entenderlo vos que sos un experto,, yo lo he intentado una y otras ves, pero los offset no lo entiendo,,
Fíjate que cuando se digita en el cuadro de texto del lisbox este se resume.
Bueno de todas maneras me ayudaste te lo agradezco, si no puedes bien,,
Disculpa me equivoque de video, ese es el de artículos, es el de clientes,,
https://www.youtube.com/watch?v=SQNYdMenQA4
En el tiempo de 0:50 allí muestra lo que busco. Pero el que se va a insertar es el numero de identificación,, ya que los otros campos tienen fórmulas, el ccual no se deberían quitar
Y aquí te dejo yo un vídeo que acabo de grabar de tu libro funcionando y haciendo lo que tu quieres: Video demo
Si no te funciona a ti ya verás tú por qué es. Ahí tienes la prueba de que hace lo que deseas.
Ya vi el vídeo que me mandaste y créeme que tiene muchos errores. Es de conocimiento básico saber que en VBA usted no necesita seleccionar una celda o una hoja para hacer algo con ella, ni pararte en una celda y usar el Offset para cargar un listbox.
Mientras hay gente que hace lo siguiente (como el chico del vídeo):
Range("A1").Select
Selection.Value = "Hola"
Que es un total desperdicio de recursos, los que realmente sabemos VBA lo haríamos así:
Range("A1").Value = "Hola"
Bueno no se que decirte,, así como muestras el demo es lo que busco, pero cuando descargue el libro,, no me hizo ese efecto,, fui a digitar un nombre y ninguno se listo, todos quedaron fijos. Que raro,, buscare de nuevo el archiv para copiar el código y pegarlo en el otro libro más actualizado, ok, yo te comento
Porque todos se llaman LUG, lo arrastre en el rango para que solo cambiara el numero de atrás LUG XX si solo escribes LUG obviamente se quedaran todos porque todos se llaman LUG, es sentido común
Yo les cambie los nombres,, y no lista ninguno,, y sale ese error,,, es obvio que si hay 20 lug no va a salir, pero si tienen numero si,, por eso te puse el ejemplo LUG11,, no lo listo
Hombre te apuesto que no copiaste el Modulo donde esta el código.
Le deseo suerte con su libro, espero que algún otro experto le pueda ayudar. Esta conversación ya se hizo muy larga.
Gracias, andyy,, si tienes razón, se me olvido copiar el código,, es que estoy un poco apurado,,
Pero si, ahora si funciono perfecto, solo tengo es que arreglar las fórmulas de los campos nombres, tel y dirección,, ya q solo debe insertarse el dato de indentificacion, para q automáticamente busquie en la base de datos de los clientes y los inserte,, solo tengo q modificar un poco el código de posiciom, pero esto si se hacerlo
Vale me alegra, pero en mi opinión no tiene lógica usar esas fórmulas, si ya te lo hice que lo pone directo del ListBox, al final va a hacer una búsqueda para poner el mismo dato. Pero bueno, usted hágalo como mejor entienda. Desde mi punto de vista la fórmula en las celdas es innecesaria en este caso.
Listo ya lo corregí,, solo había que cambiar un numero en el cod del formulario.. MUCHAS GRACIAS A TODOS,,
Si, andy tienes razón,, pero quería implementar las 2 opciones,, manual y automática,,,
Manual, es que se digita el ID en la celda E5 de la factura,, y aparecen los datos
Y automática es con el formulario,, las 2 funcionan de maravilla,, no se tal ves algún día pase algo raro, algún virus, modifiquen el form,, sin saberlo,, siempre en en edificio hay escaleras y ascensor
Entonces deberás modificar el código, y eliminar las líneas que agregan lo que piensas hacer con Fórmula o te va a borrar la fórmula y la perderás.
No por que todo esta validado y protegido.
Ya modifique tu código para que acepte solo el ID, y así el excel con la fórmula indIce y buscav,, encuentre y ubique el dato en los campos nombre y dirección y tel.. eso es todo,,
gracias por tu valiosa ayuda.. yo
Soy más de de fórmulas que de códigos,,, pues como te dije no soy programador, solo busco códigos en la internet, hay miles, como el sr ramón del video,, y en los foros, para darle un toque más estético a mis libros.. y así no me vuelvo loco aprendiendo estos códigos, pero si los entiendo un poco, sino no podría,, se hacer hacer los userforms, modificar las propiedades, hacer userform estéticos. Digamos que el 60% del libro lo hice yo, el otro 50% con ayudas de expertos, youtube, foros, etc,,
Yo al revés, más de código que de fórmula ja. VBA es un lenguaje bastante fácil, principalmente porque prácticamente todo el mundo, aquí, en youtube y en casi todos los foros programa en VBA de manera procesal, que si le dedicas un par de días a estudiarlo se te pega rápido. Yo en mis proyectos uso VBA POO pero eso es más avanzado y casi nadie lo usa.
- Compartir respuesta
[Hola. No sé si te he entendido bien, pero este código dentro del evento change de un textbox te filtra del ListBox1.
Private Sub TextBox1_Change() Datos = Hoja1.Range("A" & Rows.Count).End(xlUp).Row Hoja1.AutoFilterMode = False Me.ListBox1 = Clear Me.ListBox1.RowSource = Clear Y = 0 For Fil = 2 To Datos Ref = Hoja1.Cells(Fil, 1).Value 'Busca en la columna A, si no es cambias el 1 If UCase(Ref) Like "*" & UCase(Me.TextBox1.Value) & "*" Then Me.ListBox1.AddItem Me.ListBox1.List(Y, 0) = Hoja1.Cells(Fil, 1).Value Me.ListBox1.List(Y, 1) = Hoja1.Cells(Fil, 2).Value Me.ListBox1.List(Y, 2) = Hoja1.Cells(Fil, 3).Value Me.ListBox1.List(Y, 3) = Hoja1.Cells(Fil, 4).Value Me.ListBox1.List(Y, 4) = Hoja1.Cells(Fil, 5).Value Me.ListBox1.List(Y, 6) = Hoja1.Cells(Fil, 7).Value Y = Y + 1 End If Next End Sub
Salu2 Carlos Arrocha
¡Gracias! Lo intente pero no funciono, tampoco me sale error, pero resume los datos en el formulario, es decir no los muestra como yo deseo,, la idea fue planteada en la pregunta
imagina q tienes 100 usaurios q busca por medio de un form,,ok,, entonces para no buscarlos al ojo o bajando la barra vertical,, escribes su numero de indetificacion y este se filtra en el listbox,, tambien digitando el nombre,, este se va filtrando hasta encontrar el biuscado,,,,
El caso lo esta llevando el experto andy machin, estoy esperando que el me conteste,,
- Compartir respuesta
Carlos, yo vi su libro, si mal no recuerdo sus datos no comienzan en la fila 2, seguramente le agrega Items en blanco, por eso no le da error pero tampoco ve nada. For Fil = 2 To Datos..... ese 2 debería ajustarlo a su fila donde empiezan los datos ;) - Andy Machin