No entendí bien si son 4, 5 o 6 combobox.
¿En qué fila empiezan los datos?
Tengo una macro diseñada para crecer de 2 a muchos combos, pero los combos deberán llamarse "ComboBox" y el número según la columna, es decir, al combobox1 le corresponde la columna 1, al 2 la columna 2, al 3 la 3; y así sucesivamente.
Te anexo el código para cargar 6 combos.
Al principio de todo el código debe ir la variable Public h
Public h
'Por.Dante Amor
Private Sub ComboBox1_Change()
Call cargar(2)
End Sub
Private Sub ComboBox2_Change()
Call cargar(3)
End Sub
Private Sub ComboBox3_Change()
Call cargar(4)
End Sub
Private Sub ComboBox4_Change()
Call cargar(5)
End Sub
Private Sub ComboBox5_Change()
Call cargar(6)
End Sub
'
Private Sub UserForm_Activate()
Set h = Worksheets("Datos")
Call cargar(1)
End Sub
'
Sub cargar(ini)
'Por.Dante Amor
For i = ini To 6
Controls("ComboBox" & i).Clear
Next
For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
igual = True
For j = 1 To ini - 1
If IsNumeric(Controls("ComboBox" & j).Value) Then
dato = Val(Controls("ComboBox" & j).Value)
Else
dato = Controls("ComboBox" & j).Value
End If
If h.Cells(i, j) <> dato Then igual = False
Next
If igual Then Call agregar(Controls("ComboBox" & ini), h.Cells(i, ini), i)
Next
End Sub
'
Sub agregar(combo As ComboBox, dato As String, fila)
'Por.Dante Amor
For i = 0 To combo.ListCount - 1
Select Case StrComp(combo.List(i), dato, vbTextCompare)
Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
Case 1
combo.AddItem dato, i
combo.List(combo.ListCount - 1, 1) = fila
Exit Sub 'Es menor, lo agrega antes del comparado
End Select
Next
combo.AddItem dato 'Es mayor lo agrega al final
combo.List(combo.ListCount - 1, 1) = fila
End Sub
En el evento Activate, cambia "Datos" por el nombre de la hoja donde tienes tu información.
.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
.
Avísame cualquier duda
.