Habe hier im Forum folgenden Code zum sortierem, ohne Doppelte befüllen von Userform Comboboxen gefunden der mir ganz nützlich erscheint
Private Sub UserForm_Initialize()
Dim dic As Object
Dim xKey As Variant
Dim iRow As Long, ALetzte As Long
ALetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
Set dic = CreateObject("scripting.dictionary")
For iRow = 1 To ALetzte
If Not IsEmpty(Cells(iRow, 1)) Then
xKey = Cells(iRow, 1).Value
dic(xKey) = 0
End If
Next
For Each xKey In dic
ComboBox1.AddItem xKey
Next
dic.RemoveAll
Set dic = Nothing
Call Sortieren
ComboBox1.ListIndex = 0
End Sub
Sub Sortieren()Dim Letzter As Integer, Naechster As Integer
Dim i As String
With ComboBox1
For Letzter = 0 To .ListCount - 1
For Naechster = Letzter + 1 To .ListCount - 1
If .List(Letzter) > .List(Naechster) Then
i = .List(Letzter)
.List(Letzter) = .List(Naechster)
.List(Naechster) = i
End If
Next Naechster
Next Letzter
End With
End Sub
Meine Frage:
Mit diesem Code befülle ich die erste Combobox ohne Doppelte und sortiert.
Bei Auswahl aus der Combobox, soll mit dem ausgewähltem Wert ein Autofilter gesetzt werden.
Worksheets("Übersicht Datenbank").Select
Selection.AutoFilter Field:=1, Criteria1:=CBO_BEZEICHNUNG.Value
Nun soll die zweite Combobox befüllt werden, allerdings nur noch mit den sichtbaren Werten aus gesetzem Autofilteraus Spalte B
Nach dieser Auswahl wird nochmals ein Autofilter gesetzt mit diesem wiederum eine dritte und letzte Combobox befüllt wird. Ebenfalls nur die Sichtbaren Zeilen aus Spalte C
Wie muss ich den Code umbauen, das er nur sichtbare Zeilen einliest und vllt die wichtigste Frage, lässt sich das evtl eleganter lösen?
Ich hätte den Code nun dreimal kopiert, einmal ins Initalize Ereigniss und 2x in das jenige Chance Ereigniss der jeweiligen Combobox.
Vielen Dank fürs Helfen
Gruss Gerhard