ich muss die nachstehende Frage nochmal nach oben bringen, da ich denke dass sie beantwortet werden kann, aber bereits zu weit unten steht.
Ich habe mit der Unterstützung zweier Teilnehmer hier (besten Dank an dieser Stelle) die folgende Routine erstellt
Originaltext aus dem anderen Thread:
ich habe die beiden Routinen jetzt mal eingebaut. Die erste Routine wird bei "Enter" der ComboBox1 abgearbeitet, was auch trefflich funktioniert.
Private Sub ComboBox1_Enter()
ComboboxFuellen ComboBox1, ActiveWorkbook.Worksheets("Cash Flow").Range("AA2:AA16")
'Einlesen, sortieren und schreiben der Daten in die ComboBox
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Range("AA2:AA16")
Dim i As Integer
Dim Daten As Variant
With ComboBox1
.Clear
'Daten holen
Daten = Bereich
'sortieren
Call QuickSort_Feld(Daten, LBound(Daten, 1), UBound(Daten, 1), False)
'schreiben
For i = LBound(Daten) To UBound(Daten)
If Daten(i, 1) <> "" Then
.AddItem (Daten(i, 1))
End If
Next i
End With
End Sub
Die QuickSort-Routine ist als separater Routinen-Abschnitt angelegt, wie von Nepumuk korrigiert beschrieben.
Wenn ich jetzt einen neuen Eintrag in die obige Range eintrage, dann erscheint dieser auch alphabetisch sortiert in der ComboBox1. Lösche ich diesen Eintrag jedoch aus der Range, dann erscheint er immer noch in der ComboBox1 gelistet.
.... noch als Anmerkung.
Ich habe in dem beschriebenen UF noch eine CheckBox .... wenn ich die anklicke und dann auf den OK-Knopf drücke, schliesst sich dieses UF ... wenn ich dieses dann wieder öffne, ist die ComboBox1 nur mit dem noch vorhandenen Einträgen gelistet.
Hier mal der Code für den OK-Button:
Private Sub OK_Click()
If CheckBox1.Value = True And ComboBox1.Value = "" Then
Unload UserForm2
UserForm1.Show
ElseIf CheckBox1.Value = True And UserForm2.ComboBox1.Value <> "" Then
'an dieser Stelle reagiere ich nicht auf den ListIndex sondern auf einen Wert
i = MsgBox("You can only do one thing at a time! .... please select!", vbOKOnly, "Warning")
If i = 1 Then
UserForm2.CheckBox1.Value = False
UserForm2.ComboBox1.Value = ""
ComboBox1.SetFocus
End If
End If
End Sub
Woran kann das liegen?
Danke für einen Tipp.
Gruß
Ralph