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