Mostrar nombres en combobox según letra inicial escrita

Para Dante Amor.

Como podría realizar para que un combobox me cargue o me muestre todos los nombres según letra inicial escrita ya que en mi hoja de datos de la columna B tengo mas de 200 nombres, es decir si yo dígito E en mi combobox este deberá mostrar todos los nombres que empiezan con esa letra, si escribo Ed solo me mostrara los nombres que están empezando con Ed.

Espero que se entienda mi pregunta y mas que todo gracias por la respuesta que me puedas dar.

1 respuesta

Respuesta
2

H o l a:

Te anexo los códigos que debes poner en tu formulario:

Al inicio del formulario debes declarar la variable "cargando" y las constantes de la hoja, la columna, y la fila donde tienes los datos:

Dim cargando
Const hoja = "Hoja2", col = "A", fila = 2
'
Private Sub ComboBox1_Change()
'Por.Dante Amor
    If cargando = True Then Exit Sub
    cargarcombo hoja, col, ComboBox1, TextBox1
End Sub
'
Sub cargarcombo(hoja As String, col As String, combo As ComboBox, otrocontrol As Control)
'Por.Dante Amor
    Set h1 = Sheets(hoja)
    cargando = True
    dato = combo
    combo.Clear
    For i = fila To h1.Range(col & Rows.Count).End(xlUp).Row
        If Left(UCase(h1.Cells(i, col)), Len(dato)) = UCase(dato) Then
            combo.AddItem h1.Cells(i, col)
            j = j + 1
        End If
    Next
    combo = dato
    '
    'En esta parte se activa la lista
    Otrocontrol. SetFocus
    Combo. SetFocus
    Combo. DropDown
    Cargando

En esta línea de la macro, tienes que poner otro control, yo puse un textbox1, si no tienes un textbox, puede ser otro combo.

Cargarcombo hoja, col, ComboBox1, TextBox1


Al momento de activar el userform, se debe cargar el combo con el método AddItem. También en el combo la propiedad MatchEntry=2 :

Private Sub UserForm_Activate()
'Por.Dante Amor
    ComboBox1.MatchEntry = 2
    Set h1 = Sheets("Hoja2")
    cargando = True
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem h1.Cells(i, "A")
    Next
    cargando = False
End Sub

En esta macro faltó el End Sub:

Sub cargarcombo(hoja As String, col As String, combo As ComboBox, otrocontrol As Control)
'Por.Dante Amor
    Set h1 = Sheets(hoja)
    cargando = True
    dato = combo
    combo.Clear
    For i = fila To h1.Range(col & Rows.Count).End(xlUp).Row
        If Left(UCase(h1.Cells(i, col)), Len(dato)) = UCase(dato) Then
            combo.AddItem h1.Cells(i, col)
            j = j + 1
        End If
    Next
    combo = dato
    '
    'En esta parte se activa la lista
    Otrocontrol. SetFocus
    Combo. SetFocus
    Combo. DropDown
    cargando = False
End Sub

Estimado tienes pendiente valorar esta respuesta. S a l u dos

Disculpa que no te haya respondido Amigo Dante Ya que estuve fuera de la ciudad, en realidad no hay Internet en esa zona. Gracias por la respuesta y tu tiempo, hay un detalle en mi pregunta que no te lo había indicado; en la hoja que estoy trabajando tengo barias listas desplegables de las cuales estas quiero cambiarlas por combobox o para que la búsqueda de los nombres sea mas rápida ya que con las listas desplegables me quita mucho tiempo para buscar un nombre.

Bueno espero no causar tanto rollo con mi pregunta, solo espero que haya alguna manera de poder realizar la búsqueda de los nombres mas rápidamente Gracias por la respuesta que me puedas dar.

El código que te puse es para un combobox de userform. Tendrás que replicar el código para cada combo que tengas.

La otra opción es que crees un formulario con textbox y combobox, y pongas un botón para pasar los registros a la hoja. De esta forma solamente necesitas un solo código.

No has valorado esta respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas