Un rango de datos para muchos combobox

Hola quisiera saber si existe una manera mas corta de hacer que un mismo rango de datos en hoja excel se utilice para 50 combobox hasta ahora he hecho dos y funciona el código que utilice es :

Private Sub C1a_Enter()
Dim i As Integer
Dim final As Integer
Dim tareas As String
c1a.BackColor = &H80000005
For i = 1 To c1a.ListCount
'Remove an item from the ListBox.
c1a.RemoveItem 0
Next i
For i = 2 To 1000
If Hoja5.Cells(i, 1) = "" Then
final = i - 1
Exit For
End If
Next
'If C1a.ListCount < 1 Then
'CC1a.AddItem "-"
For i = 2 To final
tareas = Hoja5.Cells(i, 1)
c1a.AddItem (tareas)
Next
'End If
End Sub
Private Sub d1a_Enter()
Dim i As Integer
Dim final As Integer
Dim tareas As String
d1a.BackColor = &H80000005
For i = 1 To d1a.ListCount
'Remove an item from the ListBox.
d1a.RemoveItem 0
Next i
For i = 2 To 1000
If Hoja5.Cells(i, 1) = "" Then
final = i - 1
Exit For
End If
Next
'If d1a.ListCount < 1 Then
'd1a.AddItem "-"
For i = 2 To final
tareas = Hoja5.Cells(i, 1)
d1a.AddItem (tareas)
Next
'End If
End Sub

Donde c1a y d1a son combobox , pero me faltan 50 más

1 respuesta

Respuesta
1

Te mando mi solución. En mi caso he utilizado el evento INITIALIZE para cargar todos los combos al iniciar el form. En mi ejemplo estoy llenando todos los combobox de mi formulario con el rango de celdas C1:C8 y se llenan todos a la vez.

Private Sub UserForm_Initialize()
For Each ctrl In Me.Controls
If TypeName(ctrl) = "ComboBox" Then
ctrl.RowSource = "c1:c8"
End If
Next
End Sub

recuerda finalizar y puntuar la consulta

pero esto va en un modulo?

y si tengo otros combobox que debieran tener otro rango como lo hago?

Esto no va en un módulo, va dentro de los eventos del form.

Si tienes otros combos con otro rango, sería interesante utilizar un bucle for---next para que lo haga un número determinado de veces y así jugaríamos con el order de aparición de los combos dentro de tu form.

Consulta si pongo los combobox que se ejecutan igual dentro de un frame podría indicar que para el frame 1 entonces un rango determinado y para el frame2 otro rango o no funcionaria?

Claro que funcionaría, en ese caso esta sentencia sería así:

For Each ctrl In frame1.Controls

Muy buena solución muchas gracias de verdad. ahora una ultima consulta para que cada combobox dentro de cada frame copie dicha selección en una hoja de calculo en orden se podría hacer igual o no?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas