Searching...
jueves, 6 de junio de 2013

COMBOBOX: TEORÍA Objeto para listar datos.

 El Combobox es un objeto que se encuentra dentro del cuadro de herramientas y que se inserta en los USERFORM. Se utiliza principalmente para ofrecer información en forma de lista desplegable. Es habitual utilizarlo en formularios.

Existen varias formas de introducir datos en un Combobox, con un número fijo de entradas o variable, utilizando las propiedades del propio Combobox o mediante programación.

En este caso hemos creado un Combobox que lo ha llamado “ComboBox1”, pero en la propiedad (NAME) del objeto podremos cambiarlo y poner “Lista_Clientes”.



Mediante las propiedades del Combobox: Introducimos el rango de datos (FIJO) que queremos que aparezcan en el Combobox, señalando además la hoja, para que no tome el rango de la hoja activa. La composición es: Nombre_de_la_Hoja!Rango



Mediante líneas de programación

Podemos utilizar Userform_Activate o Userform_Initialize, para que cuando se abra el USERFORM se cargue el contenido de nuestro Combobox.

La siguiente forma es para introducir una lista de datos cerrada e introducidos previamente por nosotros.

Private Sub UserForm_Activate()
ComboBox1.AddItem "Número 1"
ComboBox1.AddItem "Número 2"
ComboBox1.AddItem "Número 3"
ComboBox1.AddItem "Número 4"
End Sub

Otra manera seria, con la formula: With objeto – End With. Además en este ejemplo hemos cambiado el nombre de Combobox1 por Lista_Clientes, esto siginifica que previamente hemos cambiado en las propiedades del combobox el NAME: Combobox1 por Lista_clientes.

Private Sub UserForm_Initialize()

With Lista_Clientes

.AddItem "Número 1"

.AddItem "Número 2"

.AddItem "Número 3"

.AddItem "Número 4"

End With

End Sub


La 2ª forma relacionada con la primera manera expuesta, haciendo referencia a las propiedades del Combobox, con lista cerrada y en referencia a las celdas indicadas.

Private Sub UserForm_ Initialize ()

UserForm1.ComboBox1.RowSource = " CLIENTES!A1:A10"

End Sub


Con lista abierta y en referencia a las celdas variables. BUCLE FOR-NEXT

Private Sub UserForm_ Initialize ()
última = Cells(Rows.Count, 1).End(xlUp).Row

' La variable es la ultima celda con datos
For i = 1 To última

'El FOR va recorrer desde 1 hasta el número de filas con datos.
ComboBox1.AddItem (Cells(i, 1))

'Va introducir tantos datos en el combobox como haya en la columna 1 y filas con datos.
Next


End Sub



Con lista abierta y en referencia a las celdas variables. BUCLE WHILE-WEND

Private Sub UserForm_ Initialize ()
Range("A1").Select

'Empezamos en la celda A1
While ActiveCell <> ""

'Mientras la celda activa no esté vacía
ComboBox1.AddItem ActiveCell

'Agregar Cliente al Combobox
ActiveCell.Offset(1, 0).Select

'Se desplaza la celda una fila abajo
Wend

'El bucle se detiene cuando no haya información en la columna A
End Sub



Otra forma muy parecida pero con el BUCLE DO WHILE-LOOP es la siguiente:

Private Sub UserForm_ Initialize ()
Cells(1, 1).Select

'Empezamos en la celda A1
Do While ActiveCell <> Empty

'Mientras la celda activa no esté vacía
ComboBox1.AddItem ActiveCell.Value

'Agregar Cliente al Combobox
ActiveCell.Offset(1, 0).Select

'Se desplaza la celda una fila abajo
Loop


End Sub





COMBOBOX con varias columnas

Private Sub UserForm_Initialize()
ComboBox1.List = Range("A1:B10").Value

'Definimos las propiedades del combobox
ComboBox1.ColumnCount = 2 'Número de columnas
ComboBox1.ColumnWidths = "30;80" ' Anchura de las columnas, si son 3 por ejemplo serian "10;10;10"

End Sub

0 comentarios:

Publicar un comentario

 
Back to top!