¿Cómo lleno una listbox sin que se repitan los valores?

Tengo el codigo siguiente, para llenar 2 listbox y dos combobox... Pero las listbox no se llenan para nada.

Si lo ejecuto dice

Gracias, Saludos.

Private Sub UserForm_initialize()

Dim rango1, celda1 As Range
Dim rango2, celda2 As Range
Dim rango3, celda3 As Range

'llena el combobox de market
Set rango1 = Range("TablaBase[[Purchasing org. '[Description']]]")
For Each celda1 In rango1
Call Agregar(ComboBox1, celda1.Value)
Next celda1
'llena el listbox de año
Set rango2 = Range("TablaBase[Año]")
For Each celda2 In rango2
Call Agregar2(ListBox1, celda2.Value)
Next celda2

'llena el listbox de mes
' Set rango3 = Range("TablaBase[Mes]")
' For Each celda3 In rango3
' Call Agregar2(ListBox2, celda3.Value)
' Next celda3

'llena combobox de report type
ComboBox4. AddItem "Categories lv1"
ComboBox4. AddItem "Categories lv2"
ComboBox4. AddItem "Parent Vendor"
ComboBox4. AddItem "Plants"
ComboBox4. AddItem "Vendor"
ComboBox4. AddItem "Zone"
'ComboBox3. AddItem ""
'ComboBox2. AddItem ""
'ComboBox1. AddItem ""

End Sub

'no repetir valores
Sub Agregar(combo As combobox, dato As String)
Dim i
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: Exit Sub 'Es menor, lo agrega antes del comparado
End Select
Next
combo.AddItem dato 'Es mayor lo agrega al final
End Sub

Sub Agregar2(lis As ListBox, dato As String)

Dim i
For i = 0 To lis.ListCount - 1
Select Case StrComp(lis.list(i), dato, vbTextCompare)
Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
Case 1: lis.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
End Select
Next
lis.AddItem dato 'Es mayor lo agrega al final
End Sub

Añade tu respuesta

Haz clic para o