Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
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

Werte in einer Listbox sortieren

Werte in einer Listbox sortieren
05.03.2014 14:11:54
Sebastian

Hallo Profis,
ich habe wieder ein Problem und suche schon seit Stunden eine Lösung.
Ich möchte in einem Userform Werte einer mehrspaltigen Listbox sortieren. Die Werte stammen aus einer Tabelle. Ich möchte gerne nach Datum und Zeit sortieren lassen. einmal absteigend und dann aufsteigend.
Anbei mal die Tabelle mit Userform.
https://www.herber.de/bbs/user/89541.xls
Vielen Dank schonmal für hilfe

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

Betreff
Datum
Anwender
Anzeige
AW: Werte in einer Listbox sortieren
05.03.2014 14:44:15
Peter
Hallo Sebastian,
warum kopierst Du bei Klick auf den jeweiligen Sortier-Button, die Daten nicht in ein separates Tabellenblatt, sortierts dort mit Excel-Mitteln und füllst daraus die ListBox?
Gruß Peter

AW: Werte in einer Listbox sortieren
05.03.2014 14:52:21
Sebastian
Das habe ich bisher auch so gemacht - aber ist das auch sinnvoll?

AW: Werte in einer Listbox sortieren
05.03.2014 15:00:50
Matze
Hi Sebastian,
was auch immer "Sinnvoll" ist,....
Die Recherche hier im Forum zu nutzen sollte immer der erste Weg sein,
https://www.herber.de/mailing/UserForm-ListBox-Eintraege_sortieren.htm
nur mal so am Rande erwähnt,...
Matze

Anzeige
AW: Werte in einer Listbox sortieren
05.03.2014 15:11:33
Sebastian
Hallo Matze,
Genau das mach ich auch immer, einen Beitrag zu schreiben ist dann wirklich die letzte Rettung.
Den Code aus deinem Link habe ich auch schon gefunden, nur nicht zum Laufen bekommen :-(
Sinnvoll ist, ich denke das geht schneller als wenn ich es vorsortiernen lasse.
Viele Grüße und vielen Dank
Sebastian

AW: Werte in einer Listbox sortieren
05.03.2014 15:17:13
Oberschlumpf
Hi Sebastian,
grundsätzlich hat Matze schon recht.
Erst mal selber suchen.
Aber ok, vielleicht hast du das ja auch getan, und sogar den Link gefunden, konntest damit aber nix anfangen.
Ich selbst mache es aber auch wie du.
Wenn ich mal ne Listbox sortiert darstellen muss, extrahiere ich die gewünschten Daten zuerst in eine Hilfstabelle, die ja auch immer ausgeblendet sein kann, sortiere dann mit Excel-Mitteln und füge die Daten erst dann der Listbox hinzu.
Sinnvoll mag diese Vorgehensweise nicht gewesen sein, als wir noch mit Computern gearbeitet haben, die nur eine "geringe" Taktgeschwindigkeit hatten, weil das Sortieren in einer Tabelle mitunter "länger" dauert als direkt mit VBA-Code.
Aber heute, zu Zeiten mit Dual-,Quad- und sogar 8fach-Bereifung..ähh...8 Prozessoren in einem Kern :-), ist es egal, wie du sortierst - hauptsache der Aufwand zum Erreichen des Ziels ist gering.
Somit würde ich sagen: Lass es so, wie es ist.
Ciao
Thorsten

Anzeige
AW: Werte in einer Listbox sortieren
05.03.2014 15:36:11
Bastian
Hallo Sebastian,
so geht es auch nur mit VBA. Genutzt wird je ein BubbleSort Algorithmus. Einmal für aufsteigende Sortierung, und einmal für absteigende Sortierung.
Gruß, Bastian

Option Explicit
Private Sub UserForm_Initialize()
Dim lngZeile As Long
lngZeile = 11
Do
ListBox1.ColumnCount = 6
ListBox1.ColumnWidths = "0cm;2cm;4cm;2cm;2cm;3cm"
ListBox1.AddItem Cells(lngZeile, 1)
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(lngZeile, 2)
ListBox1.List(ListBox1.ListCount - 1, 2) = Format(Cells(lngZeile, 3), "dd.mm.yyyy")
ListBox1.List(ListBox1.ListCount - 1, 3) = Format(Cells(lngZeile, 4), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 4) = Format(Cells(lngZeile, 5), "hh:mm")
ListBox1.List(ListBox1.ListCount - 1, 5) = Cells(lngZeile, 6)
lngZeile = lngZeile + 1
Loop While Cells(lngZeile, 2)  ""
End Sub
Private Sub CommandButton1_Click()
Call BubbleSortUp(0, ListBox1.ListCount - 1, 2)
End Sub
Private Sub CommandButton2_Click()
Call BubbleSortDown(0, ListBox1.ListCount - 1, 2)
End Sub
Function BubbleSortUp(lngLBound As Long, lngUBound As Long, bytSpalte As Byte)
Dim j As Long
Dim i As Long
Dim k As Long
Dim vTemp As Variant
For j = lngUBound - 1 To lngLBound Step -1
' Alle links davon liegenden Zeichen auf richtige Sortierung
' der jeweiligen Nachfolger überprüfen:
For i = lngLBound To j
' Ist das aktuelle Element seinem Nachfolger gegenüber korrekt sortiert?
If CDate(ListBox1.List(i, bytSpalte)) > CDate(ListBox1.List(i + 1, bytSpalte)) Then
' Element und seinen Nachfolger vertauschen.
For k = 1 To 5
vTemp = ListBox1.List(i, k)
ListBox1.List(i, k) = ListBox1.List(i + 1, k)
ListBox1.List(i + 1, k) = vTemp
Next k
End If
Next i
Next j
End Function
Function BubbleSortDown(lngLBound As Long, lngUBound As Long, bytSpalte As Byte)
Dim j As Long
Dim i As Long
Dim k As Long
Dim vTemp As Variant
For j = lngUBound - 1 To lngLBound Step -1
' Alle links davon liegenden Zeichen auf richtige Sortierung
' der jeweiligen Nachfolger überprüfen:
For i = lngLBound To j
' Ist das aktuelle Element seinem Nachfolger gegenüber korrekt sortiert?
If CDate(ListBox1.List(i, bytSpalte)) 

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige