Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listbox sortieren

Listbox sortieren
18.03.2007 21:47:50
Jonathan

Hey,
via Schleife füge ich Daten in ein Listenfeld ein, welche bestimmte Kriterien erfüllen - wie kann ich diese alphabetisch sortieren?
Mein Gedanke:
Ich müsste die Daten erst in ein Array einfügen, dieses sortieren und dann in das Listenfeld einfügen. Jetzt habe ich aber keine Ahnung von Arrays.... ;-(
Ginge das auch anders?
Hintergrund:
Ich habe zwei Listenfelder nebeneinander. Von dem einen kann ich Daten in das andere verschieben. Der Grundcode steht. Beim Verschieben wird der Datensatz aus dem ersten Listenfeld gelöscht. Die Daten in dem ersten Listenfeld werden aus einer Spalte eingelesen und können dann ausgewählt werden um diese in das zweite Listenfeld zu "exportieren". Füge ich nun Daen in das zweite Listenfeld ein (oder wieder zurück in das Erste) müsste ich ja immer den Inhalte wieder in ein Array einlesen, dieses sortieren.....
Bin für Eure Tipps dankbar.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox sortieren
18.03.2007 21:52:05
Knut
Hi,
benutz mal die Recherche "Array sortieren".
mfg Knut
AW: Listbox sortieren
18.03.2007 22:16:28
proxima05
Mit dem folgenden Code sollte es gehen (Datenbereich und Spaltenanzahl noch festlegen)

Private Sub UserForm_Activate()
Dim i As Integer
Dim varArray
With Worksheets("HIER-MUSS-NOCH-ETWAS-REIN")
varArray = .Range("A1:Z100")
End With
Call QuickSort(1, UBound(varArray), varArray)
With UserForm1
.ComboBox1.ColumnCount = 2
.ComboBox1.ColumnWidths = "35 pt;82 pt"
.ComboBox1.List = varArray
'Leereinträge aus Tabelle Spalte AF in Combobox-Auswahlliste löschen
For i = .ComboBox1.ListCount - 1 To 0 Step -1
If .ComboBox1.List(i, 0) = "" Then
.ComboBox1.RemoveItem (i)
End If
Next i
.ComboBox1.ListIndex = -1         'normal ist 0, mit "-1" wird die CBox beim Initialisieren
'ohne Inhalt angezeigt.
End With
End Sub


Private Sub QuickSort(lngUgrenze As Long, lngOgrenze As Long, varFeld)
Dim lngIndex1 As Long, lngIndex2 As Long, varElement As Variant, varSpeicher As Variant, intSpalte As Integer
lngIndex1 = lngUgrenze
lngIndex2 = lngOgrenze
varSpeicher = varFeld(((lngUgrenze + lngOgrenze) / 2) \ 1, 1) 'der Wert hinter dem Komma ist die Spalte die sortiert wird
Do
Do While varFeld(lngIndex1, 1) < varSpeicher 'der Wert hinter dem Komma ist die Spalte die sortiert wird
lngIndex1 = lngIndex1 + 1
Loop
Do While varSpeicher < varFeld(lngIndex2, 1) 'der Wert hinter dem Komma ist die Spalte die sortiert wird
lngIndex2 = lngIndex2 - 1
Loop
If lngIndex1 <= lngIndex2 Then
For intSpalte = 1 To 2 '2 Spalten übertragen
varElement = varFeld(lngIndex1, intSpalte)
varFeld(lngIndex1, intSpalte) = varFeld(lngIndex2, intSpalte)
varFeld(lngIndex2, intSpalte) = varElement
Next
lngIndex1 = lngIndex1 + 1
lngIndex2 = lngIndex2 - 1
End If
Loop Until lngIndex1 > lngIndex2
If lngUgrenze < lngIndex2 Then Call QuickSort(lngUgrenze, lngIndex2, varFeld)
If lngIndex1 < lngOgrenze Then Call QuickSort(lngIndex1, lngOgrenze, varFeld)
End Sub
===============================================
Gruß
Ralph
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige