Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
7 ComboBox1.AddItem celda.Value
8 Next celda
9
End Sub
10
Con este código recorremos todas las celdas del rango A1:A7 y por cada celda
agregamos un nuevo elemento al ComboBox. Observa que el código está dentro
del evento UserForm_Initialize lo que ocasionará que la carga de datos se haga en
el momento en que se inicialice el formulario.
De esta manera queda creado nuestro nombre de rango dinámico que utilizaremos
para cargar datos al ComboBox. Si quieres saber un poco más sobre la creación
de este tipo de nombres te recomiendo leer el artículo Nombres de rango
dinámicos. En las siguientes secciones haremos uso de este rango dinámico
recién creado.
COMBOBOX EN HOJA DE EXCEL CON RANGO DINÁMICO
Si nuestro ComboBox se encuentra en la hoja de Excel, podemos hacer referencia
al rango dinámico abriendo la ventana de propiedades y para la
propiedad ListFillRange colocar el nombre del rango dinámico:
Sin embargo, con esta adecuación no es suficiente para que la actualización del
ComboBox sea automática. Si dejamos las cosas así, los datos se refrescarán
solamente hasta que cerremos y volvamos a abrir el libro, así que lo mejor será
agregar código adicional a nuestra hoja para asegurarnos de que la actualización
se hace en cuanto modificamos los elementos de la columna A.
1
Private Sub Worksheet_Change(ByVal Target As Range)
2 If Not Intersect(Target, Range("A:A")) Is Nothing Then
3 With ComboBox1
4 .Value = ""
5 .ListFillRange = "=MiLista"
6 End With
End If
7
End Sub
8
elementos.
COMBOBOX EN FORMULARIO VBA CON RANGO DINÁMICO
Para hacer que un ComboBox que está ubicado dentro de un formulario cargue
sus datos desde el rango dinámico, debemos utilizar el siguiente código:
5
6 For Each celda In rango
7 ComboBox1.AddItem celda.Value
Next celda
8
9
End Sub
10
Para usar este ejemplo, copie este código de muestra en la parte Declaraciones de
un formulario. Asegúrese de que el formulario contenga:
Una etiqueta denominada Label1.
Un CommandButton llamado CommandButton1.
Un ComboBox llamado ComboBox1.
Private Sub UserForm_Initialize()
Label1.Left = 18
Label1.Top = 12
Label1.Height = 12
Label1.Width = 190
ComboBox1.Style = fmStyleDropDownList
ComboBox1.ListIndex = 0
ComboBox1.Left = 18
ComboBox1.Top = 36
ComboBox1.Width = 90
ComboBox1.ListWidth = 90
'Initialize CommandButton1
CommandButton1.Left = 230
CommandButton1.Top = 36
CommandButton1.Height = 120
CommandButton1.Width = 120
CommandButton1.Picture = _
LoadPicture("c:\windows\argyle.bmp")
CommandButton1.PicturePosition = ComboBox1.Value
End Sub
CommandButton1.PicturePosition = _
fmPicturePositionLeftTop
CommandButton1.PicturePosition = _
fmPicturePositionLeftCenter
CommandButton1.PicturePosition = _
fmPicturePositionLeftBottom
CommandButton1.PicturePosition = _
fmPicturePositionRightTop
CommandButton1.PicturePosition = _
fmPicturePositionRightCenter
CommandButton1.PicturePosition = _
fmPicturePositionRightBottom
fmPicturePositionAboveLeft
CommandButton1.PicturePosition = _
fmPicturePositionAboveCenter
CommandButton1.PicturePosition = _
fmPicturePositionAboveRight
CommandButton1.PicturePosition = _
fmPicturePositionBelowLeft
CommandButton1.PicturePosition = _
fmPicturePositionBelowCenter
CommandButton1.PicturePosition = _
fmPicturePositionBelowRight
Case 12 'Centered
CommandButton1.Caption = "Centered"
CommandButton1.PicturePosition = _
fmPicturePositionCenter
End Select
End Sub