Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
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
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Listbox sortieren

Listbox sortieren
21.12.2003 11:08:19
Jochen
Hallo Leute,

ich muss eine 8- spaltige Listbox sortieren, hab aber keinen Plan wie
ich das machen soll. Ideal wäre, nach den einzelnen Spalten sortieren
zu können, muss aber nicht sein, wenns zu aufwändig ist.

Sortieren im Tabellenblatt geht nicht, weil die Daten nicht zusammenhängend
im Blatt stehen.

ListView will ich nicht nehmen, da ich nicht voraussetzen kann, dass auf
allen PC die MS Common Controls installiert sind.

Danke für Vorschläge und Grüße...

Jochen

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Danke, erledigt..oT
21.12.2003 12:02:12
Jochen
oT
AW: Listbox sortieren
21.12.2003 12:03:27
Nepumuk
Hallo Jochen,
oder direkt in der Listbox. Hier ein Beispiel für eine mit vier Spalten:

Option Explicit
Private Sub CommandButton1_Click()
Dim strSpalte As String
Do
strSpalte = InputBox$("Welche Spalte?", "Eingabe")
strSpalte = Trim$(strSpalte)
If strSpalte = "" Then Exit Sub
If Len(strSpalte) = 1 And InStr(1, "1234", strSpalte) <> 0 Then Exit Do
MsgBox "Nur ganze Zahlen von 1 bis 4 zulässig.", 48, "Hinweis"
Loop
Call sortieren(0, ListBox1.ListCount - 1, CByte(strSpalte))
End Sub
Private Sub sortieren(lngUgrenze As Long, lngOgrenze As Long, bytSpalte As Byte)
Dim lngIndex1 As Long, lngIndex2 As Long, strElement As String
Dim strZwischenspeicher As String, bytIndex As Byte
lngIndex1 = lngUgrenze
lngIndex2 = lngOgrenze
strZwischenspeicher = ListBox1.List(((lngUgrenze + lngOgrenze) / 2) \ 1, bytSpalte - 1)
Do
Do While ListBox1.List(lngIndex1, bytSpalte - 1) < strZwischenspeicher
lngIndex1 = lngIndex1 + 1
Loop
Do While strZwischenspeicher < ListBox1.List(lngIndex2, bytSpalte - 1)
lngIndex2 = lngIndex2 - 1
Loop
If lngIndex1 <= lngIndex2 Then
For bytIndex = 0 To 3
strElement = ListBox1.List(lngIndex1, bytIndex)
ListBox1.List(lngIndex1, bytIndex) = ListBox1.List(lngIndex2, bytIndex)
ListBox1.List(lngIndex2, bytIndex) = strElement
Next
lngIndex1 = lngIndex1 + 1
lngIndex2 = lngIndex2 - 1
End If
Loop Until lngIndex1 > lngIndex2
If lngUgrenze < lngIndex2 Then Call sortieren(lngUgrenze, lngIndex2, bytSpalte)
If lngIndex1 < lngOgrenze Then Call sortieren(lngIndex1, lngOgrenze, bytSpalte)
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
Danke auch dir..oT
21.12.2003 13:21:47
Jochen
ot
..doch noch eine Frage
21.12.2003 14:11:46
Jochen
Hallo Nepumuk,

dein Code klappt natürlich. Gibt es noch eine Möglichkeit Zahlen
"richtig" zu sortieren, also nicht:
1
10
11
usw.

sondern:

1
2
3

Geht das irgendwie?

Gruß Jochen
AW: ..doch noch eine Frage
21.12.2003 16:06:29
Nepumuk
Hallo Jochen,
ändere folgende Zeilen:

Do While ListBox1.List(lngIndex1, bytSpalte - 1) < strZwischenspeicher

in

Do While Val(ListBox1.List(lngIndex1, bytSpalte - 1)) < Val(strZwischenspeicher)

und

Do While strZwischenspeicher < ListBox1.List(lngIndex2, bytSpalte - 1)

in

Do While Val(strZwischenspeicher) < Val(ListBox1.List(lngIndex2, bytSpalte - 1))

Gruß
Nepumuk
Anzeige
AW: ..doch noch eine Frage
21.12.2003 20:35:54
Jochen
Hallo Nepumuk,

ich habe Val durch CDbl ersetzt, weil sonst ja die Nachkommastellen nicht
richtig sortiert werden.

Danke nochmal und schönes Weihnachtsfest.

Gruß Jochen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige