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