¿Cómo programar un combobox?

Respuesta de
a
Usuario
Deseo programar un combobox para que al momento de escribir sobre él, automáticamente me despliegue la lista que contiene y poder elegir con las fechas abajo-arriba la opción que deseo
Usuario
Muchísimas gracias, sinceramente muchas gracias.
Experto
Lo que se consigue es que mientras se escriba en el cuadro de texto, se vaya mostrando el item que se parezca más a lo que estamos escribiendo. Style debe estar a 0.

Escribe el siguiente código en el form que contenga el Combo:

Private Sub Combo1_Change(Index As Integer)
Static YaEstoy As Boolean

On Local Error Resume Next

If Not YaEstoy Then
YaEstoy = True
unCombo_Change Combo1(Index).Text, Combo1(Index)
YaEstoy = False
End If
Err = 0
End Sub


Private Sub Combo1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
unCombo_KeyDown KeyCode
End Sub


Private Sub Combo1_KeyPress(Index As Integer, KeyAscii As Integer)
unCombo_KeyPress KeyAscii
End Sub

Añade estas declaraciones y procedimientos en un módulo BAS,
(o en el mismo FORM, pero cambia el PUBLIC por PRIVATE):

Option Explicit

Dim Combo1Borrado As Boolean

Public Sub unCombo_KeyDown(KeyCode As Integer)
If KeyCode = vbKeyDelete Then
Combo1Borrado = True
Else
Combo1Borrado = False
End If
End Sub


Public Sub unCombo_KeyPress(KeyAscii As Integer)
'si se pulsa Borrar... ignorar la búsqueda al cambiar
If KeyAscii = vbKeyBack Then
Combo1Borrado = True
Else
Combo1Borrado = False
End If
End Sub


Public Sub unCombo_Change(ByVal sText As String, elCombo As ComboBox)
Dim i As Integer, L As Integer

If Not Combo1Borrado Then
L = Len(sText)
With elCombo
For i = 0 To .ListCount - 1
If StrComp(sText, Left$(.List(i), L), 1) = 0 Then
.ListIndex = i
.Text = .List(.ListIndex)
.SelStart = L
.SelLength = Len(.Text) - .SelStart
Exit For
End If
Next
End With
End If
End Sub
Experto
Si cambias la propiedad style a 2 y pones sorted en true el combo al no
Permitir ingresar datos nuevos busca automáticamente en la lista cuando pulsa alguna tecla si encuentra una coincidencia en lo elementos del Combo.

Espero que te sirva de ayuda.
Usuario
Agradezco primeramente que comparte su conocimiento y tiempo, en cuanto a la respuesta no me soluciona el problema debido a que necesito programar el combo estando el estyle=1 ya que si esta en 2 no puedo escribir sobre el y necesito escribir sobre el combo y que me aparezca la lista que tiene el combo mientras escribo y me vaya pocisionando sobre la opción que inicia con la cadena que estoy insertando, gracias