Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Alle Dateinamen in Listbox sortieren

Alle Dateinamen in Listbox sortieren
19.11.2006 11:07:55
egon
Hallo Excelexperten!
Problem: Sortierung von Dateinamen in einer Listbox
Ich möchte in einer Listbox in Userform1 alle Dateien (sehr viele) eines Ordners anzeigen lassen.
Wie könnte ich das hinkriegen?
Hab schon versucht erst in Tabelle einfügen dort sortieren dann in die Listbox reinschreiben.Sortieren ging nicht.
Die 04 oder 16 am Ende ist die Uhrzeit. XLS kann drinbleiben stört nur die Optik
04.04.2003 04.xls
30.03.2002 16.xls
12.11.2002 16.xls
Wer kann helfen?
Shönen Sonntag noch
Egon

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 12:00:43
fcs
Hallo Egon,
das Problem ist wohl eher das Excel zwar sortieren kann, aber dir die Reihenfolge nicht gefällt.
nach was/welcher Reihenfolge willst du übrigens sortieren? Datum , das in den ersten 10 Zeichen das Dateinamens steckt, dann nach der Stunde.
Wenn du die Dateinamen in eine Tabelle übertragst, dann muss du zum Sortieren den Text des Dateinamens in eine Sortierfähige Form bringen.
Das geht folgendermaßen recht flott.
1. Trage die Liste in eine Exceltabelle ein. z. Beispiel Bereich A1 bis A500
.....Dabei müssen rechts des Bereiches 2 leere Spalten vorhanden sein
2. Markiere den Bereich.
3. Menü- daten - Text in Spalten
4. im Dialogfenster als Typ "getrennt" und weiter
5. im Dialogfenster für Trennzeichen "Leerzeichen" und WEITER
6. im Dialogfenster unter Zielbereich die Nachbarspalte wählen z.B. B1
für die 1. Spalte das Datenformat auf Datum TMJ umstellen
für die 2. Spalte das Datenformat auf Text umstellen und ENDE
Jetzt hast du die drei Spalten nach Wunsch sortieren.
Gruss
Franz
Anzeige
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 13:10:17
egon
Hallo fcs!
Vielen Dank für die Mühe am Sonntag
Das sieht schon besser aus. Sortieren klappt.
Jetzt habe ich in Tabelle1 drinne:
B2 Tag
C2 Monat
D2 Jahr
E2 Stunde
F2 xls - brauche ich nicht
Diese Daten müsste ich "nur" noch in eine Listbox kriegen
Sollte in der Listbox wieder wie ein Datum aussehen:
Z.B 19.11.06 16
Wie kann das gehen?
Schönen Gruß
egon
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 14:04:31
Daniel
Hallo
in Spalte A sollten doch die Dateinamen jetzt in der Richtig Sortierten Reihenfolge stehen.
die kannst du nach dem Sortieren in einer Schleife mit ADDITEM einlesen oder den ganzen Zellbereich mit ROWSOURCE zuweisen.
Gruß, Daniel
Anzeige
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 19:16:07
egon
Hallo an euch Helfer!
Ich packs immer noch nicht-zu blöd.
Habe kleine Datei reingestellt.
https://www.herber.de/bbs/user/38314.xls
Hoffentlich alles klar beschrieben.
Ich hoffe dass ihr mir trotz Sonntag helfen könnt.
Schönen Gruß
Egon
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 20:51:52
Daniel
Hallo
das ist der Code, den du zum Einlesen brauchst.
Er wandelt die Dateinamen in echte Datums/Zeil-Werte zum, daher genügt eine Zusatzspalte.
Dann sortiert er die Liste und weist den Zellbereich der Listbox zu.

Private Sub CommandButton1_Click()
With Sheets("Tabelle1")
.Cells(1, 1).CurrentRegion.Offset(1, 1).Resize(Cells(1, 1).CurrentRegion.Rows.Count - 1).FormulaR1C1 = "=DATEVALUE(LEFT(RC[-1],8))+VALUE(RIGHT(RC[-1],2))/24"
.Cells(1, 1).CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
xlYes, OrderCustom:=4, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ListBox1.RowSource = "'Tabelle1'!" & Range(.Cells(2, 1), .Cells(65000, 1).End(xlUp)).Address
.Columns(2).ClearContents
End With
End Sub

Gruß, Daniel
Anzeige
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 20:52:36
Nepumuk
Hallo Egon,
folgender Code in dem Modul deines Userforms:
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
    Dim vntArray As Variant
    With Tabelle1
        vntArray = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
    Call prcSort(1, UBound(vntArray), vntArray)
    ListBox1.List = vntArray
End Sub

Private Sub prcSort(lngLBorder As Long, lngUBorder As Long, vntArray As Variant)
    Dim lngIndex1 As Long, lngIndex2 As Long
    Dim strBuffer As String, dmtTemp As Date
    lngIndex1 = lngLBorder
    lngIndex2 = lngUBorder
    dmtTemp = CDate(Mid$(vntArray((lngLBorder + lngUBorder) \ 2, 1), 1, 8))
    Do
        Do While CDate(Mid$(vntArray(lngIndex1, 1), 1, 8)) < dmtTemp
            lngIndex1 = lngIndex1 + 1
        Loop
        Do While dmtTemp < CDate(Mid$(vntArray(lngIndex2, 1), 1, 8))
            lngIndex2 = lngIndex2 - 1
        Loop
        If lngIndex1 <= lngIndex2 Then
            strBuffer = vntArray(lngIndex1, 1)
            vntArray(lngIndex1, 1) = vntArray(lngIndex2, 1)
            vntArray(lngIndex2, 1) = strBuffer
            lngIndex1 = lngIndex1 + 1
            lngIndex2 = lngIndex2 - 1
        End If
    Loop Until lngIndex1 > lngIndex2
    If lngLBorder < lngIndex2 Then Call prcSort(lngLBorder, lngIndex2, vntArray)
    If lngIndex1 < lngUBorder Then Call prcSort(lngIndex1, lngUBorder, vntArray)
End Sub

Gruß
Nepumuk
Anzeige
AW: Alle Dateinamen in Listbox sortieren
19.11.2006 21:26:57
egon
Hallo, herzlichen Dank euch beiden.
Prima Lösung, klappt bestens.
Habe mich für die Lösung von Nepumuk entschieden.
Schönen Gruß
Egon

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige