Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ComboBox ..... QuickSort!?

ComboBox ..... QuickSort!?
02.11.2006 22:33:02
proxima
Hallo,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox ..... QuickSort!?
03.11.2006 10:08:21
fcs
Hallo Ralph,
die eigentliche Erstellungsprozedur die Elemnte der der Kombobox scheint OK zu sein.
Was macht eigentlich die zu Beginn der Prozedur aufgerufenen Sub-Prozedur
ComboboxFuellen ComboBox1, ActiveWorkbook.Worksheets("Cash Flow").Range("AA2:AA16")
?
Das nach dem OK-Button, bei Wiederaufruf des UF die Auswahlliste korrekt angezeigt wird ist sehr logisch, denn das UF wird mit Unload aus dem Speicher entfernt und beim Wiederaufruf komplett neu aufgebaut.
Möglicherweise werden in der Initialisierungs-Prozedur des UF die Daten irgendwie für das UF aufbereitet, so dass die Enter-Prozdur der ComboBox1 immer auf alte Daten zugreift.
Leider viele Spekulationen mangels Infos.
Gruss
Franz
Anzeige
AW: ComboBox ..... QuickSort!?
03.11.2006 11:00:39
proxima
Hallo Franz,
die Sub-Prozedur ComboBox1_Enter ist im Zusammenhang mit der Sub-Prozedur ComboBoxFuellen zu sehen (siehe unten).

Private Sub ComboBox1_Enter()
ComboboxFuellen ComboBox1, ActiveWorkbook.Worksheets("Cash Flow").Range("AA2:AA16")
End Sub


Private Sub ComboboxFuellen(CBox As ComboBox, Bereich As Range)
'Laden der Daten aus dem Bereich in die ComboBox, leere Zellen werden übersprungen
With CBox
.Clear
For Each Zelle In Bereich
If Zelle.Value <> "" Then
.AddItem (Zelle.Value)
End If
Next Zelle
End With
End Sub

Das war die Ausgangsbasis für das Erweitern der Sub-Prozedur ComboBox1_Enter() mit dem QuickSort-Code. Ich kann nicht verlangen, dass Du mir meinen Code überarbeitest, habe aber trotzdem mal alle Prozeduren (fünf kurze) für dieses UF in der angehängten Tabelle aufgeführt; vielleicht findest Du ja recht schnell einen Ansatz (schon mal ein herzliches Dankeschön dafür).
https://www.herber.de/bbs/user/37880.xls
Gruß
Ralph
Anzeige
AW: ComboBox ..... QuickSort!?
03.11.2006 16:13:09
fcs
Hallo Ralph,
einen Grund, warum nach Löschen eines Eintrags im Bereich AA2:AA16 die Auswahlliste der Combobox nicht korrekt aktualisiert wird, kann ich nicht finden.
Du kannst allerdings die Enter-Prozedur der ComboBox1 wie folgt ändern:

Private Sub ComboBox1_Enter()
'Einlesen, sortieren und schreiben der Daten in die ComboBox
Dim Bereich As Range
Set Bereich = ActiveWorkbook.Worksheets("Cash Flow").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 Prozedur "ComboBoxFuellen" ist nach deiner Umstellung des Codes nicht mehr erforderlich
Gruss
Franz
Anzeige
AW: ComboBox ..... QuickSort!?
04.11.2006 13:56:14
proxima05
Hallo Franz,
vielen Dank für Deine entschlackten Code, der auch klasse funktioniert ...... ich habe jetzt nochmal etwas rumprobiert und in der Abbrechen-Routine, den Eintrag "Unload UserForm2" gesetzt und da hat es funktioniert (macht auch irgendwie Sinn, denn beim Schliessen über Abbrechen bleibt das UF im Speicher)

Private Sub Abbrechen_Click()
If UserForm2.ComboBox1.Value <> "" Then
UserForm2.ComboBox1.Value = ""
ComboBox1.SetFocus
End If
Unload UserForm2
UserForm2.Hide
End Sub

Jetzt funktionierts! ..... Dir nochmals allerbesten Dank für die Tipps .... ich werde sicherlich wiederkommen.
Schönes Wochenende.
Gruß, Ralph
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige