Cómo realizar una búsqueda inteligente en varias columnas VBA a medida que se escribe cada caracter

Gentilmente me has ayudado a resolver varias incógnitas en mis primeras incursiones en la programación VBA y por ello vuelvo a consultarte:

¿Cómo puedo realizar una búsqueda automática a medida que voy introduciendo cada caracter en un textbox? Quisiera que la búsqueda se realizara en tres o más columnas y el resultado se muestre en un listbox. Además, si fuera posible, quisiera que en la búsqueda, el código considere que lo que escriba en el textbox puede estar en cualquier lugar de los valores de la tabla. Es decir, si tipeo "al", me muestre aquellos registros que contengan "al" tanto al principio, como en el medio y en el final.

1 Respuesta

Respuesta
1

Te anexo el código.

El máximo de columnas a cargar en el listbox es de 10. Si quieres cargar más de 10 columnas tendría que utilizar otro método. Pero prueba con el siguiente:

Private Sub TextBox1_Change()
'Por.Dante Amor
    ListBox1.Clear
    ListBox1.ColumnCount = 10
    If TextBox1 = "" Then Exit Sub
    '
    cini = "A"
    cfin = "F"
    For i = 1 To ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
        For j = Columns(cini).Column To Columns(cfin).Column
            If Cells(i, j) Like "*" & TextBox1 & "*" Then
                ListBox1.AddItem Cells(i, cini)
                n = 1
                For k = Columns(cini).Column + 1 To Columns(cfin).Column
                    ListBox1.List(ListBox1.ListCount - 1, n) = Cells(i, k)
                    n = n + 1
                    If n = 11 Then Exit For
                Next
                Exit For
            End If
        Next
    Next
End Sub

Cambia en la macro las letras "A" y "F"  por las columnas que quieras utilizar para comparar con el textbox


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias, Dante!

Funcionó de mil maravillas.

El único detalle, es que tuve que modificar tu línea nº 11 para que no distinga entre mayúsculas y minúsculas. En su lugar, me quedó la siguiente línea:

If LCase(Cells(i, j).Value) Like "*" & LCase(Me.CriterioaBuscar.Value) & "*" Then

Pero la verdad es que me solucionaste al caso de manera magistral.

Ahora te valoro el aporte.

Un ciber-abrazo.-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas