En hoja excel desplegar combo con enter, búsqueda elemento, seleccionar con flechas, con enter capturar y salir del combo..

Se trata de lo siguiente; en una hoja excel al rellenar una celda y pulsar enter que despliega un combo con más de 100 elementos en la lista, una vez desplegado el combo quiero sin necesidad de cliquear dentro de él, escribir directamente la letra o letras que me muestren el elemento o los elementos de la lista que comience/n con la o las letras introducidas, una vez el combo muestra la lista de coincidencias, con las teclas de flecha me desplazo sobre la lista mostrada y cuando estoy sobre el elemento buscado, presiono enter lo capturo y el foco se va a la siguiente celda del formulario. Es decir, para capturar el elemento buscado y salir del combo no usar el ratón para nada.

1 Respuesta

Respuesta
1

Envíame tu formulario, me dices en cuál celda rellenas, pulsas enter, pasa al combo, pulsas enter y a cuál siguiente celda se va.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jose Segura Lopez

No era tan simple, esto lo que tiene que estar en tu hoja:

Dim cargando, vienedelcode
'
Private Sub ComboBox2_Change()
'Por.Dante Amor
    Application.ScreenUpdating = False
    If cargando = True Then
        If vienedelcode Then
            cargando = False
            vienedelcode = False
        End If
        Exit Sub
    End If
    Set h2 = Sheets("fichaproveedores")
    col = "A"
    cargando = True
    dato = ComboBox2.Value
    ComboBox2.Clear
    u = h2.Range("A" & Rows.Count).End(xlUp).Row
    'fichaproveedores!A5:A158
    For i = 5 To u
        If UCase(h2.Cells(i, col)) Like UCase(dato) & "*" Then
            ComboBox2.AddItem h2.Cells(i, col)
            'j = j + 1
        End If
    Next
    ComboBox2.Value = dato
    '
    'Se activa una celda para que aparezca el combo completo
    Range("F11"). Activate
    ComboBox2. Activate
    ComboBox2. DropDown
    '
    Application.ScreenUpdating = True
    cargando = False
End Sub
'
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Select Case KeyCode
        Case 13, 38, 40 'enter, flecha arriba y abajo
            vienedelcode = True
            cargando = True
            If KeyCode = 13 Then
                Range("F12").Select
            End If
    End Select
End Sub
'
Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor
    If Not Intersect(Target, Range("F10")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Value = "" Then Exit Sub
        ComboBox2.Activate
        ComboBox2.DropDown
        ComboBox2_Change
    End If
End Sub

¡Gracias! Funciona perfectamente, no hay nada difícil para un buen profesional. Saludos y perdón por los malos entendidos y por la formulación imprecisa de mis necesidades..

Atentamente. José Segura López

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas