VBA VB6 - Forzar el despliegue de un ComboBox

Mayo 2017



Para desplegar un ComboBox existe la función:
ComboBox1.DropDown


Sin embargo, para esto es necesario que el ComboBox tenga el foco, pero si el comando viene de otro control será ese control que tenga el foco, y esto no funcionará.

Para abrir el otro ComboBox es necesario recurrir a un truco.

Colocar los 2 ComboBox un una hoja de cálculo o en un UserForm y denominarlos ComboBox1 y ComboBox2 respectivamente.

En los eventos change de estos dos combo colocar el código siguiente:
Private Sub ComboBox1_Change() 
'========== Combo en una hoja =========    1 
    'ComboBox2.Activate 
'========== Combo en un UserForm o VB6 ========= 2 
    'ComboBox2.SetFocus 
'========================================== 
    SendKeys "^(F4)" 
End Sub 
  
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    If KeyCode = 16 Then 
        ComboBox2.DropDown 
    End If 
End Sub


Liberando la línea 1 ó 2 según la ubicación de los ComboBox.
Resultado: cuando selecciones una opción en el ComboBox 1, el 2 se abrirá automáticamente.

Consulta también

Artículo original escrito por . Traducido por Carlos-vialfa. Última actualización: 12 de julio de 2010 a las 18:20 por Carlos-vialfa.
El documento «VBA VB6 - Forzar el despliegue de un ComboBox» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.