Buscar datos a medida que se escribe mostrando datos en listbox insertado





Esta es otra versión de macro que busca datos a medida que se escribe en Textbox c
on la particularidad que presenta los datos en un listbox incrustado o insertado en Excel denominado control ActiveX, las otras versiones relacionadas las encuentras en los siguientes links:

http://www.programarexcel.com/2016/10/buscar-datos-medida-que-se-escribe.html

http://www.programarexcel.com/2015/08/buscar-datos-medida-que-se-escribe-en.html

http://www.programarexcel.com/2015/09/pasar-datos-de-listbox-con-doble-click.html

http://www.programarexcel.com/2015/08/buscar-en-listbox-mientras-se-escribe.html

http://www.programarexcel.com/2015/09/pasar-datos-listbox-hoja-de-excel.html

http://www.programarexcel.com/2015/10/pasar-datos-de-listbox-multiselect-hoja.html

http://www.programarexcel.com/2015/09/pasar-datos-de-listbox-con-doble-click.html

Otras pequeñas macros interesantes son: macro que sólo permite en el Textbox ingresar texto o string, macro que sólo deja ingresar números en los Textbox, otra es macro que escribe las barras automáticamente al ingresar las fechas.

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

En el vídeo que encuentras a continuación se observa una explicación un poco más detallada, pero sobre todo gráfica del ejemplo que se presenta; el cual lo podrás descargar desde el link del final; al descargar el ejemplo podrás observar dos Textbox los cuales utiliza la macro para obtener los datos a buscar, también hay un listbox isertado en Excel o control ActiveX.

Al escribir en el textbox la macro buscará en la base de datos y mostrará todas las coincidencias que se den con los caracteres escritos, la macro va buscando a medida que el usuario escriba caracteres en el textbox y mostrando las coincidencias con los caracteres sea que se encuentran al principio, medio o final de la palabra.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.









Código que se inserta en la Hoja donde se requiere el filtro




Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Sheets("Hoja1").Range("A2").Value = "*" & TextBox1.Text & IIf(TextBox1.Text = "", "", "*")
    Call searching
End Sub

Private Sub searching()

On Error Resume Next
Set a = Sheets("Hoja1")
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
a.ListBox1.Clear
For i = 2 To uf
   strg = b.Cells(i, 3).Value
   If UCase(strg) Like UCase(a.TextBox1.Value) & "*" Then
       a.ListBox1.AddItem b.Cells(i, 1)
       a.ListBox1.List(a.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
       a.ListBox1.List(a.ListBox1.ListCount - 1, 2) = b.Cells(i, 3)
       a.ListBox1.List(a.ListBox1.ListCount - 1, 3) = b.Cells(i, 4)
   End If
Next i
a.ListBox1.ColumnWidths = "20 pt;120 pt ;120 pt;120 pt" End Sub

Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Sheets("Hoja1").Range("E2").Value = "*" & TextBox2.Text & IIf(TextBox2.Text = "", "", "*")
    Call searching1
End Sub

Private Sub searching1()

On Error Resume Next
Set a = Sheets("Hoja1")
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
a.ListBox1.Clear
For i = 2 To uf
   strg = b.Cells(i, 4).Value
   If UCase(strg) Like UCase(a.TextBox2.Value) & "*" Then
       a.ListBox1.AddItem b.Cells(i, 1)
       a.ListBox1.List(a.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
       a.ListBox1.List(a.ListBox1.ListCount - 1, 2) = b.Cells(i, 3)
       a.ListBox1.List(a.ListBox1.ListCount - 1, 3) = b.Cells(i, 4)
      ' Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = b.Cells(i, 5)
      ' Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = b.Cells(i, 6)
      ' Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = b.Cells(i, 7)
      ' Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = b.Cells(i, 8)
   End If
Next i
a.ListBox1.ColumnWidths = "20 pt;120 pt ;120 pt;120 pt"
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends