Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ListBox nach Datum sortieren

ListBox nach Datum sortieren
05.03.2018 09:28:01
Merc
Guten Morgen,
wie kann ich, möglich einfach in einer ListBox die eingefügte Liste (nach Datum absteigend) sortieren?
Im Forum habe ich schon etwas gelesen, dass eine zusätzliche Liste auf einer anderen Tabelle erstellt werden müsste. Fand ich zu kompliziert gelöst :/
Ist es einfacher lösbar?

Private Sub LISTE_LADEN_UND_INITIALISIEREN()
Dim lZeile As Long
Dim lZeileMaximum As Long
Dim i As Integer
For i = 1 To iCONST_ANZAHL_EINGABEFELDER
Me.Controls("TextBox" & i) = ""
Next i
ListBox1.Clear 'Liste leeren
ListBox1.ColumnCount = 18
ListBox1.ColumnWidths = "0;75;50;100"
lZeileMaximum = Tabelle1.UsedRange.Rows.Count
For lZeile = lCONST_STARTZEILENNUMMER_DER_TABELLE To lZeileMaximum
ListBox1.AddItem lZeile
ListBox1.List(ListBox1.ListCount - 1, 1) = CStr(Tabelle1.Cells(lZeile, 1).Text)
ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle1.Cells(lZeile, 2).Text)
ListBox1.List(ListBox1.ListCount - 1, 3) = CStr(Tabelle1.Cells(lZeile, 3).Text)
ListBox1.List(ListBox1.ListCount - 1, 4) = CStr(Tabelle1.Cells(lZeile, 4).Text)
End If
Next lZeile
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox nach Datum sortieren
05.03.2018 10:18:57
Hajo_Zi
sortiere doch die Tabelle. Ist einfacher. Der Befehl Cstr() ist sinnlos.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: ListBox nach Datum sortieren
05.03.2018 10:23:43
Daniel
Hi
mit AddItem kannst du Daten nicht nur am Ende einfügen, sondern an einer bestimmen Position.
Hierzu gibst du als zweiten Parameter dann diese Positionsnummer an, an der die neue Zeile eingefügt werden soll. Die alte Zeile mit dieser Nummer und alle folgenden rutschen dann eine Postion weiter.
dh du könntest noch eine innere Schleife einbauen, mit welcher du überprüfst, an welcher Stelle der Wert eingefügt werden muss.
also im Prinzip so, ich gehe mal davon aus, dass das Datum in Zeile 1 steht.
die Prüfschleife muss abgebrochen werden, wenn das Datum in der Zelle kleiner (oder größer, je nach Sortierrichtung) als das Datum in der Listbox ist.
An der Stelle muss dann die neue Zeile in die Listbox eingefügt werden.
Bei Datums- oder Zahlenwerten ist zu beachten, dass diese in der Listbox immer als Text stehen und entsprechend gewandelt werden müssen, wenn sie mit Tabellenwerten verglichen werden.
For lZeile = lCONST_STARTZEILENNUMMER_DER_TABELLE To lZeileMaximum
For i = 0 to Listbox1.ListCount - 1
IF Tabelle1.Cells(lZeile, 1).Value 

Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ListBox nach Datum sortieren in Excel


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass deine Daten in einer Excel-Tabelle vorliegen, die du für die ListBox verwenden möchtest. Es ist ratsam, die Daten nach Datum in aufsteigender oder absteigender Reihenfolge zu sortieren.

  2. ListBox erstellen: Füge eine ListBox zu deinem Excel-Arbeitsblatt hinzu. Du kannst dies über die Entwicklertools tun, indem du eine UserForm erstellst und die ListBox platzierst.

  3. Daten laden: Verwende den folgenden VBA-Code, um die Daten in die ListBox zu laden und gleichzeitig nach Datum zu sortieren:

    Private Sub LISTE_LADEN_UND_INITIALISIEREN()
       Dim lZeile As Long
       Dim lZeileMaximum As Long
       ListBox1.Clear 'Liste leeren
    
       lZeileMaximum = Tabelle1.UsedRange.Rows.Count
       For lZeile = lCONST_STARTZEILENNUMMER_DER_TABELLE To lZeileMaximum
           ' Füge Datum und andere relevante Daten hinzu
           ListBox1.AddItem CStr(Tabelle1.Cells(lZeile, 1).Value) ' Datum
           ListBox1.List(ListBox1.ListCount - 1, 1) = CStr(Tabelle1.Cells(lZeile, 2).Text)
           ' Weitere Spalten können hier hinzugefügt werden
       Next lZeile
    
       ' Sortiere die ListBox nach Datum
       Call SortiereListBoxNachDatum
    End Sub
    
    Private Sub SortiereListBoxNachDatum()
       ' Hier kommt der Sortieralgorithmus für die ListBox
    End Sub
  4. Sortierlogik implementieren: Füge eine Sortierfunktion hinzu, um die ListBox-Inhalte nach Datum zu sortieren. Du kannst dazu einen einfachen Algorithmus verwenden, der durch die ListBox iteriert und die Einträge entsprechend anordnet.


Häufige Fehler und Lösungen

  • Fehler: ListBox zeigt leere Einträge an.

    • Lösung: Stelle sicher, dass die Daten korrekt geladen werden und dass die ListBox nach dem Leeren neu gefüllt wird.
  • Fehler: Datumsformate werden nicht richtig angezeigt.

    • Lösung: Verwende CStr() nur, wenn es nötig ist. Achte darauf, dass die Daten als Datum formatiert sind und nicht als Text.

Alternative Methoden

Eine alternative Möglichkeit, um eine ListBox nach Datum zu sortieren, ist die Verwendung von Excel-Formeln oder Pivot-Tabellen. Du kannst die Daten in einer Pivot-Tabelle gruppieren und sortieren, bevor du sie in die ListBox lädst. Dies kann jedoch etwas komplizierter sein, wenn du nicht mit Pivot-Tabellen vertraut bist.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit Verkaufsdaten, die folgende Spalten hat: Datum, Produkt, Verkäufe. Du kannst die ListBox so einrichten, dass sie die Verkaufsdaten nach Datum anzeigt:

Private Sub LISTE_LADEN_UND_INITIALISIEREN()
    ' Beispiel für das Laden von Verkaufsdaten
    Dim lZeile As Long
    Dim lZeileMaximum As Long
    ListBox1.Clear

    lZeileMaximum = Tabelle1.UsedRange.Rows.Count
    For lZeile = 2 To lZeileMaximum ' Beginne bei 2, um die Kopfzeile zu überspringen
        ListBox1.AddItem CStr(Tabelle1.Cells(lZeile, 1).Value) ' Datum
        ListBox1.List(ListBox1.ListCount - 1, 1) = CStr(Tabelle1.Cells(lZeile, 2).Text) ' Produkt
        ListBox1.List(ListBox1.ListCount - 1, 2) = CStr(Tabelle1.Cells(lZeile, 3).Text) ' Verkäufe
    Next lZeile

    Call SortiereListBoxNachDatum
End Sub

Tipps für Profis

  • Verwende Arrays: Lade die Daten in ein Array, sortiere das Array und füge die sortierten Daten dann in die ListBox ein. Dies kann die Performance erheblich verbessern.

  • Direktes Sortieren: Wenn du die Daten in der Excel-Tabelle vor dem Laden in die ListBox sortierst, kannst du die ListBox ohne weitere Sortierlogik füllen.


FAQ: Häufige Fragen

1. Wie kann ich die ListBox nach mehreren Kriterien sortieren?
Du kannst die Sortierfunktion anpassen, indem du mehrere Vergleichsbedingungen hinzufügst, um die ListBox nach mehreren Spalten zu sortieren.

2. Ist es notwendig, die Daten in der Tabelle zu sortieren?
Es ist nicht zwingend notwendig, aber es kann die Handhabung der Daten in der ListBox erheblich vereinfachen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige