Aquí te pongo otro, pero con un ListBox (List1). Según se va escribiendo en el TextBox (Text1) va marcando en el List la coincidencia y al hacer doble click en él, completa el TextBox.
Código:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LB_FINDSTRING = &H18F
Private Sub Text1_Change()
Dim lPos As Long
With List1
If Text1.Text = "" Then .ListIndex = 0
lPos = SendMessage(.hwnd, LB_FINDSTRING, -1, ByVal Text1.Text)
If lPos >= 0 Then .ListIndex = lPos
End With
End Sub
Private Sub List1_DblClick()
Text1.Text = List1.Text
End Sub