ich versuche mich schon seit Tagen ein einem VBA-Code für Comboboxen. Inzwischen habe ich mir etwas zusammbasteln können, hänge aber immer noch an zwei Punkten.
Punkt 1: Ich habe zwei Comboboxen in einer Tabelle, die mir Spalte I und J ab Zeile 31 ohne Leerzeilen und ohne Duplikate sortiert ausgeben. Soweit so gut. Manuell habe ich noch den Eintrag ALLE über .Additem hinzugefügt. Dieser erscheint aber immer an letzter Stelle, nicht an erster. Was mache ich falsch?
Private Sub ComboBoxT1_DropButtonClick()
Dim objDictionary As Object
Dim varBereich As Variant
Dim loZaehler As Long
Dim arrDaten
Dim lngLetzte As Long
Dim iRow As Long, ALetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Set objDictionary = CreateObject("Scripting.Dictionary")
With ActiveSheet
varBereich = .Range("I31", .Cells(.Rows.Count, 9).End(xlUp))
End With
For loZaehler = LBound(varBereich) To UBound(varBereich)
objDictionary(varBereich(loZaehler, 1)) = 0
Next
arrDaten = objDictionary.keys
Sort_A_Z_T1 arrDaten, LBound(arrDaten), UBound(arrDaten)
ComboBoxT1.List = arrDaten
With ComboBoxT1
.AddItem "ALLE"
End With
End Sub
Public Sub Sort_A_Z_T1(SortArray, L, R)
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I L)
J = J - 1
Wend
If (I
Punkt 2: Diesen Code verwende ich auch für zwei (oder mehr) Comboboxen innerhalb einer Userform, jedoch ohne den letzten Abschnitt mit .Additem ALLE. Auch hier soll z.B. in Combobox1 der Text ab $I$31 und in Combobox2 der Text ab $J$31 ohne Leerzeilen, ohne Duplikate sortiert aufgelistet sein. Das klappt auch, nur sind in Combobox2 auch die Werte aus Combobox1 enthalten. Kann mir hierzu bitte jemand helfen?Gru0 Marcus