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

Respuesta
2

[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,,

Pues este código hace lo que estas pidiendo. Si lo colocas dentro de un textbox, busca y filtra los datos del listbox. Solo tienes que cambiar la hoja si no es la correcta, el nombre del listbox y el número de la columna.

1 respuesta más de otro experto

Respuesta
3

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,,

https://www.youtube.com/watch?v=tVcWQofo4xc 

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

Esto es lo que me sale con el nuevo código

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! 

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,,

Estaría bueno si nos cambias la valoración a Excelente ;)

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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas