Combobox con búsqueda mientras escribe.

Quiero saber como hacer que un combobox que tiene cargada una lista en el evento initialize con RowSource, me permita buscar dentro de esa misma lista mientras escribo en el, permitiendo encontrar los datos mas rápido. Ya que de manera normal el combobox solo busca coincidir lo escrito en el, con la primera palabra de los datos de la lista, así no es eficiente porque a veces la palabra esta entre medio y aunque se escriba exactamente igual no la detecta. Sin embargo quiero que solo permita los datos de la lista. HELPME!

2 respuestas

Respuesta
1

Sobre ese tema tengo varias respuestas:

Elegir valor de la lista desplegable con autocompletar(SÍMIL COMBOBOX

No se despliega listado y flecha en combobox

Como autocompletar Combobox en vba

Ahí explico lo que debes realizar. No olvides votar las respuestas y regresar a valorar.

Hola amigo Dante Amor tome el código que usas en el caso de tener el combobox en un userform pero aun así sigue coincidiendo solo con la primera palabra del ítem, te cuento que mi lista contiene items compuestos en la mayoría de los casos por 2 y 3 nombres quisiera que al escribir el combo me traiga las coincidencias sin importar en que lugar se encuentre la palabra. Adicionalmente veo que necesitas un textbox que en mi caso no necesito, si me cuentas para que sirve le puedo buscar utilidad o podría ocultarlo si es obligatorio para el funcionamiento.

Dim cargando
'
Private Sub ComboBox1_Change()
'Por.Dante Amor
    Application.ScreenUpdating = False
    If cargando = True Then Exit Sub
    Set h2 = Sheets("hoja2")
    col = "A"
    cargando = True
    dato = ComboBox1
    ComboBox1.Clear
    For i = 2 To h2.Range(col & Rows.Count).End(xlUp).Row
        If UCase(h2.Cells(i, col)) Like UCase(dato) & "*" Then
            ComboBox1.AddItem h2.Cells(i, col)
        End If
    Next
    ComboBox1 = dato
    '
    'Se activa una celda para que aparezca el combo completo
    TextBox1. SetFocus
    ComboBox1. SetFocus
    ComboBox1. DropDown
    '
    Application.ScreenUpdating = True
    cargando = False
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h2 = Sheets("hoja2")
    For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem h2.Cells(i, "A")
    Next
End Sub

Cambia esto:

If UCase(h2.Cells(i, col)) Like UCase(dato) & "*"

Por:

If UCase(h2.Cells(i, col)) Like "*" & UCase(dato) & "*"

También revisa esto:

Cambia la propiedad MatchEntry del combo a 2 - frmMatchentryNone

[No olvides votar y valorar respuestas.

Respuesta
1

Aqui tienes otras opciones

https://youtu.be/0UuR_zRQCB4 

Fijate como se usa un textbox para que busque clientes mientras se escribe

Estos son otros ejemplos

https://youtu.be/0xqYY1R8UxM

https://youtu.be/SWUB1hEXxUw

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas