Buscar datos a medida que se escribe en Textbox





El ejemplo que se muestra se titula buscar en una hoja de Excel mientras se escribe en TextBox, la idea es que a medida que vayamos escribiendo en textbox, vayan apareciendo las coincidencias en forma automática.

Si pretendes automatizar tu libro de Excel seguramente te es necesario saber seleccionar o referenciar celdas, en FORMAS DE SELECCIONAR O REFERENCIAR CELDAS CON VBA (Spanish Edition) encontrarás una excelente ayuda; si trabajas con fechas en Excel, fíjate en el siguiente link que te puede ser de utilidad FORMATOS Y FUNCIONES DE FECHA Y HORA DE MICROSOFT EXCEL (Spanish Edition)

  

Antes de continuar, 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.

El ejemplo de macro que se explica en este post, a mi entender es bastante útil, ya que permite buscar en una base de datos a medida que se escribe en un Textbox; en este caso, es una hoja de Excel, que irá mostrando todas la coincidencias que haya con la letras o letras ingresadas en un Textbox, en otras palabras tendrá en cuenta la cadena de texto ingresada y la buscará en la base de datos en tiempo real, es decir a medida que se vaya escribiendo.

La macro funciona con un filtro avanzado, cuyos criterios son otorgados por el usuario al ingresar los datos; este filtro se realiza en el lugar, mostrando las coincidencias con las letras o palabras escritas en textbox, al descargar el ejemplo podrás observar dos textbox incrustados en Excel, donde se deberá escribir lo que se requiera buscar.

El primer textbox busca en la columna C el nombre del producto y el segundo textbox busca en la columna D por marca; una particularidad es que busca la cadena de texto ingresada en el textbox en todo el registro, es decir si se ingresa sol, mostrará palabras que tengan la cadena de texto sol al inicio, medio o final ya sea en una palabra o en todas las palabras que componen el registro de dicha celda.

Automáticamente determina el rango donde debe buscar ya que establece cual es la última fila con datos y arma el rango donde se debe buscar.

Desde el link del final se puede descargar el archivo para poder adaptar y observar su programación, no tiene restricción alguna; en caso que te haya sido útil no olvides colaborar  y compartido en las redes sociales. 

El vídeo de YouTube muestra en forma detallada la programación y funcionamiento del ejemplo presentado en el post, no olvides suscribir al canal para recibir las actualizaciones, como así tampoco compartir con tus amigos en las redes sociales..




Código que se inserta en una hoja Worksheet



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
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub

Private Sub Searching()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    If Sheets("Hoja1").FilterMode = True Then Sheets("Hoja1").ShowAllData
    uf = Sheets("Hoja1").Range("A" & Cells.Rows.Count).End(xlUp).Row
    Sheets("Hoja1").Range("C4:C" & uf).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("A1:A2"), Unique:=False
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
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
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub

Private Sub Searching1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    If Sheets("Hoja1").FilterMode = True Then Sheets("Hoja1").ShowAllData
    uf = Sheets("Hoja1").Range("A" & Cells.Rows.Count).End(xlUp).Row
    Sheets("Hoja1").Range("D4:D" & uf).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("E1:E2"), Unique:=False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
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