Recientemente recibí varias consultas relativas a formularios por parte de un lector. Una de ellas me pareció interesante y hoy voy a comentarla. Se trata de la posibilidad de mediante dos botones mover el contenido que hemos cargado en un control combobox.
Normalmente, cuando cargamos un combo, la información la consultamos abriendo el desplegable y seleccionando el ítem que nos interesa, pero en este caso, la información la veremos a través de dos botones, uno que permita ir hacia delante y otro hacia atrás, mostrando un ítem con cada clic.
Imaginemos que tenemos un combobox y que lo hemos rellenado con la información que tenemos en la primera columna de la hoja «DATOS» de nuestro archivo (para este ejemplo caso son los departamentos de la empresa que me inventé para el post de los organigramas en SmartArt).
A ese userform le vamos a agregar dos botones (Atrás y Adelante), de forma que cuando inicialicemos nuestro form aparecerá lo siguiente:
Ahora ya podemos ir al código:
Para cargar los datos en el combobox (hay muchas formas de hacerlo, esta es la que suelo utilizar).
Private Sub UserForm_Initialize()
With Sheets("DATOS")
Fin = Application.CountA(.Range("A:A"))
ComboBox1.List = .Range("A2:A" & Fin).Value
End With
End Sub
Ahora que tenemos los datos en el combo, usamos la siguiente macro para el botón «ATRÁS»:
Private Sub CommandButton1_Click()
ComboBox1.SetFocus
SendKeys "{Up}"
End Sub
Y esta otra macro para el botón «ADELANTE».
Private Sub CommandButton2_Click()
ComboBox1.SetFocus
SendKeys "{Down}"
End Sub
Como podéis ver, simplemente aplico el foco en el Combobox1 y luego con SendKeys utilizo las teclas del teclado de arriba y abajo, consiguiendo así que los ítems de nuestro combo vayan apareciendo a medida que pulso en los botones.
Aunque no es frecuente realizar este tipo de programación, sí puede surgir en algún momento la necesidad, prueba de ello es la propia consulta del lector.
Descarga el archivo de ejemplo pulsando en: SELECCIONAR ITEMS DE UN COMBOBOX MEDIANTE UN COMANDO DE BOTÓN