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
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
Muchísimas gracias, sinceramente muchas gracias.
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.