Como mostrar mismo listado en varios ComboBox?

Tengo hasta 30 ComboBox llamados "Area1, Area2... Area30" de los cuales necesito que me muestre la misma lista colocada en hoja2 de la columna 5

Utilizo lo siguiente, solo que lo coloco en cada ComboBox y quiero saber si se puede reducir la instrucción

Private Sub Area1_Enter()
Dim i As Integer
Dim final As Integer
Dim tareas As String
For i = 1 To Area1.ListCount
Area1.RemoveItem 0
Next i
For i = 2 To 80
If Hoja2.Cells(i, 5) = "" Then
final = i - 1
Exit For
End If
Next
For i = 2 To final
tareas = Hoja2.Cells(i, 5)
Area1.AddItem (tareas)
Next
End Sub

1 respuesta

Respuesta
2

Te adjunto un código un poco más simple para llenar el combobox:

Private Sub Area1_Enter()
'x Elsamatilde
Dim i As Integer
'vaciar el control
Area1.Clear
'llenar el control hasta encontrar una celda vacía en col 5
i = 2
While Hoja2.Cells(i, 5) <> ""
    Area1.AddItem Hoja2.Cells(i, 5)
    i = i + 1
Wend
End Sub

Ahora, no entendí eso de llenar 30 controles con la misma información?

Si fuese la misma, te enviaré un código para todos. Sino este ejemplo te servirá para los 30 donde solo debes cambiar el rango de Hoja2 por el que corresponda a cada control.

Sdos y si esta respuesta ya resuelve tu consulta no olvides valorarla (Excelente o Buena)

Me refería que tengo un formulario con hasta 30 combobox distribuidos con varios fines, de los cuales cada uno de ellos necesito que muestre la misma información de la hoja2 columna5, lo que actualmente hago es colocar la indicación a cada combobox y la pregunta es: si esto se podría hacer aún más simple y evitar colocar uno a uno de los 30 combobox el proceso, que tú respuesta es muy buena, ya me reduces captura en cada uno, pero me gustaría evitar hacerlo uno a uno y no tanto por no querer hacerlo si no por reducir tamaño en el archivo, ya que pretendo hacer un segundo formulario "similar"

Bien, en ese caso primero sería alimentarlos al inicializar el userform.

Coloqué la subrutina fuera del evento del UF porque seguramente la necesitarás también en otras situaciones si llegás a limpiar los controles.

Private Sub UserForm_Initialize()
'colocar la misma información en todos los controles
Call alimentaCombos
End Sub
Sub alimentaCombos()
'x Elsamatilde
'llenar cada control con datos de col 5 hasta encontrar una celda vacía
Set hojax = Sheets("Sheet1")    'ajustar el nombre de la hoja con datos
i = 2                           'primer fila con datos
While hojax.Cells(i, 5) <> ""
    For x = 1 To 3             'se cargarán los 20 combos llamados 'Area' & x
        miCtrl = "Area" & x
        Me.Controls(miCtrl).AddItem hojax.Cells(i, 5)
    Next x
    'pasa a fila siguiente de la hoja de datos
    i = i + 1
Wend
End Sub

Sdos!

Me marca error

¿De qué tipo de formulario estamos hablando? ¿De un Userform o diseñaste algo como un formulario en una hoja?

Userform

Las 2 macros que te envié van en el Userform.

Si no lo podés resolver dejame un correo o escribime a alguno de los que aparecen en mi sitio que dejo al pie. Así te envío mañana mi muestra que funciona correctamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas