Como buscar y/o filtrar en un listbox con ayuda de un texbox

Bueno tengo un listbox que ciertamente me filtra las palabras, pero tengo que insertar la primera letra de la palabra que busco para que se pueda filtrar.

Tengo un código para filtrar parte del texto y no es necesario tener que ingresar la primera letra para que busque la palabra. Es decir filtra parte de todo el texto y no solo de la palabra inicial.

Tengo el código pero no se como adaptarlo.

POR FAVOR un poco de ayuda me caería muy bien.

Este es el código que tengo

Private Sub TextBox1_Change()
'Por.DAM
Application.ScreenUpdating = False
campo1 = IIf(TextBox1 = "", "", TextBox1 & "*")
filtrar
Application.ScreenUpdating = True
End Sub
Private Sub filtrar()
'Por.DAM
'filtra los datos
Set t = Sheets("temp")
t.Cells.Clear
Set h2 = Sheets("PRODUCTOS")
With h2
u = .Range("A" & Rows.Count).End(xlUp).Row
With .Range("A1:E" & u)
If campo1 <> "" Then
.AutoFilter Field:=2, Criteria1:=campo1
.Copy t.Range("A1")
Else
Me.ListBox1 = ""
End If
End With
If .AutoFilterMode Then .Range("A1").AutoFilter
'If .FilterMode Then .ShowAllData
End With
u = t.Range("A" & Rows.Count).End(xlUp).Row
If u > 1 Then
ListBox1.ColumnHeads = False
ListBox1.RowSource = t.Name & "!A2:B" & u
End If
Set h2 = Nothing
Set t = Nothing
End Sub

Y ESTE ES EL CODIGO QUE DESEO ADAPTARLE PARA QUE EL FILTRO ME BUSQUE PARTE DEL TEXTO 

Private Sub TextBox1_Change()
ListBox1.Clear
valor = TextBox1.Value
Set busca = Sheets("personal").Range("a1:e54").Find(valor, LookIn:=xlValues, lookat:=xlPart)
If Not busca Is Nothing Then
ubica = busca.Address
Do
ubica2 = "$A$" & busca.Row
ListBox1.AddItem Range(ubica2)
i = ListBox1.ListCount - 1
ListBox1.List(i, 1) = Range(ubica2).Offset(0, 1)
ListBox1.List(i, 2) = Range(ubica2).Offset(0, 2)
ListBox1.List(i, 3) = Range(ubica2).Offset(0, 3)
ListBox1.List(i, 4) = Range(ubica2).Offset(0, 4)
Set busca = Sheets("personal").Range("a1:e54").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
End Sub

2 respuestas

Respuesta
2

D

Me siento extasiado :p

Respuesta
2

Solamente tienes que cambiar esta línea

campo1 = IIf(TextBox1 = "", "", TextBox1 & "*")

Por esta

campo1 = IIf(TextBox1 = "", "", "*" & TextBox1 & "*")

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas