AW: Dateien aus Verzeichnis sortieren
EtoPHG
Hallo Berta,
Dein Problem war nicht so einfach zu lösen...
Trotzdem glaube ich Dein Problem gelöst zu haben.
Hier ist der Code für die Userform und eine zusätzliche Funktion um einen String der Form "MMM jjjj" in eine Zahl umzuwandeln und anschliessend die Listbox in der richtigen Reihenfolge zu füllen.
Eventuell musst Du in der Funktion die Monatsnamen so anpassen, dass sie Deinen abgespeicherten Dateinamen entsprechen. Also wenn Du z.B. die Datei vom März unter MAR 2004.xls abgespeichert hast, den aMonthNames(3) auf "MAR" ändern.
Private Sub UserForm_Initialize()
Dim sPath As String
Dim sFullName As String
Dim dDateiName As Double
Dim ix As Integer
ListBox1.Clear
sPath = "...Hier den Pfad eintragen...."
sFullName = Dir(sPath & "*.xls")
While sFullName <> ""
dDateiName = getDateVal(Left(sFullName, InStr(1, sFullName, ".") - 1))
If dDateiName > 0 Then
For ix = 0 To ListBox1.ListCount - 1
If getDateVal(Left(ListBox1.List(ix), InStr(1, ListBox1.List(ix), ".") - 1)) > dDateiName Then
ListBox1.AddItem sFullName, ix
Exit For
End If
Next ix
If ix = ListBox1.ListCount Then ListBox1.AddItem sFullName
End If
sFullName = Dir
Wend
End Sub
Private Function getDateVal(sMonYear As String) As Double
' Wandelt einen string vom typ "Mrz 2017" in eine Zahl 201703 um
' Gibt 0 zurück bei falschem string (z.B. "März 2017")
Dim aMonthNames(12) As String
Dim ix As Integer
aMonthNames(1) = "JAN"
aMonthNames(2) = "FEB"
aMonthNames(3) = "MRZ"
aMonthNames(4) = "APR"
aMonthNames(5) = "MAI"
aMonthNames(6) = "JUN"
aMonthNames(7) = "JUL"
aMonthNames(8) = "AUG"
aMonthNames(9) = "SEP"
aMonthNames(10) = "OKT"
aMonthNames(11) = "NOV"
aMonthNames(12) = "DEZ"
getDateVal = Val(Right(sMonYear, 4)) * 100
For ix = 1 To 12
If Left(UCase(sMonYear), 3) = aMonthNames(ix) Then
getDateVal = getDateVal + ix
Exit Function
End If
Next ix
getDateVal = 0
Exit Function
End Function
Mir hat das Problem wieder einige Augen geöffnet, was Excel kann und was nicht.
Mailto:hgoeldi@compuserve.com
Gruss Hansueli