Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
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
Inhaltsverzeichnis

ComboBox während des Befüllens sortieren

ComboBox während des Befüllens sortieren
04.10.2017 15:49:37
reiner
hallo Leute,
eine ComboBox wird befüllt mit:

cboCombo1.List = .Range(.Cells(7, 1), .Cells(letzteZeile, 1)).Value

anschließend sortiert mit:
Function SortierenCombobox()
Dim i_Erster As Integer
Dim i_Letzter As Integer
Dim i_Aktuell As Integer
Dim i_Nächster As Integer
Dim s_buffer As String
With frmBuchungen.cboCombo1
If .ListCount = 0 Then Exit Function
i_Erster = 0
i_Letzter = .ListCount - 1
For i_Aktuell = i_Erster To i_Letzter
For i_Nächster = i_Aktuell + 1 To i_Letzter
If .List(i_Aktuell) > .List(i_Nächster) Then
s_buffer = .List(i_Nächster)
.List(i_Nächster) = .List(i_Aktuell)
.List(i_Aktuell) = s_buffer
End If
Next i_Nächster
Next i_Aktuell
End With
End Function

Danach sind die Einträge in der CB zwar sortiert, aber der ListIndex eines gewählten Eintrags stimmt nicht mit der Position des Eintrags in der CB überein.
Gibt es eine Lösung bei der gleich beim Einlesen der ListIndex korrekt dem gewählten Eintrag zugeordnet wird?
mfg
reiner

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox während des Befüllens sortieren
04.10.2017 16:17:18
EtoPHG
Hallo Reiner,
Dein Anliegen verstehe ich nicht.
Der ListIndex verändert sich bei der Auswahl, das ist mir klar.
Wie aber soll schon was angewählt sein, wenn unmittelbar nach der Befüllung sortiert wird?
Beim Einlesen ist also nichts gewählt! Das versteh ich nicht!
Gruess Hansueli
AW: ComboBox während des Befüllens sortieren
04.10.2017 16:28:19
Daniel
Hi
du kannst die Original-Indexnummer in die Spalte B der Tabelle schreiben.
dann liest du diese in die Tabelle mit ein:
cboCombo1.List = .Range(.Cells(7, 1), .Cells(letzteZeile, 2)).Value
deine Comboboxliste ist jetzt 2-Spaltig, dh das musst du in der Eigenschaftsliste bei ColumnCount mit angeben.
beim Sortieren musst du darauf achten, dass deine Listbox jetzt 2-Spaltig ist und beide Spalten tauschen:
'--- Werte tauschen erste Spalte
s_buffer0 = .List(i_Nächster, 0)
.List(i_Nächster, 0) = .List(i_Aktuell, 0)
.List(i_Aktuell, 0) = s_buffer
'--- Werte tauschen zweite Spalte
s_buffer1 = .List(i_Nächster, 1)
.List(i_Nächster, 1) = .List(i_Aktuell, 1)
.List(i_Aktuell, 1) = s_buffer1
den Originalindex kannst du dann mit cboCombo1.List(cboCombo1.ListIndex, 19) ermitteln (dieser muss dann ggf noch in eine Zahl gewandelt werden)
wenn der Originalindex als Ergebnis der Eigenschaft .Value ausgegeben werden soll, musst du die Eigenschaft BoundColumn auf 2 setzen.
wenn die zweite Spalte in der Klappliste nicht angezeigt werden soll, musst du in der Eigenschaft .ColumnWidth die zweite Spalte auf 0 setzen.
Gruß Daniel
Anzeige
hallo Hansueli und Daniel,
04.10.2017 17:01:20
reiner
zunächst vielen Dank für eure Anregungen
ich habe mich aufgrund eurer Beträge entschieden auf die VBA-Sortierung komplett zu verzichten und stattdessen vorab die in die CB einzulesenden Zeilen aus der Tabelle in alphabetischer Reihenfolge zu sortiern, dann passt auch der ListIndex
mfg
reiner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige