Listbox Einträge alphabetisch sortieren Umlaute

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox MsgBox
Bild

Betrifft: Listbox Einträge alphabetisch sortieren Umlaute
von: Tom
Geschrieben am: 17.11.2015 13:50:59

Hallo,
mit folgendem Code sortiere ich die Einträge einer Listbox alphabetisch:


Private Sub UserForm_Initialize()
    
    ...
    
    With ListBox1
    
        lngLetzteZeile = Sheets("Startland_temp").Cells(Rows.Count, 1).End(xlUp).Row
        MsgBox lngLetzteZeile
        
        For i = 1 To lngLetzteZeile
            .AddItem Worksheets("möp").Range("A" & i).Value
        Next i
    End With
    
    SortListBox ListBox1
    
    ListBox1.ListIndex = 0
  
...
End Sub

Private Sub SortListBox(ByRef LB As MSForms.ListBox)
Dim First As Integer
Dim Last As Integer
Dim NumItems As Integer
Dim i As Integer
Dim j As Integer
Dim Temp As String
Dim TempArray() As Variant
ReDim TempArray(LB.ListCount)
First = LBound(TempArray)
Last = UBound(TempArray) - 1
For i = First To Last
    TempArray(i) = LB.List(i)
Next i
For i = First To Last
    For j = i + 1 To Last
        If TempArray(i) > TempArray(j) Then
            Temp = TempArray(j)
            TempArray(j) = TempArray(i)
            TempArray(i) = Temp
        End If
    Next j
Next i
LB.Clear
For i = First To Last
    LB.AddItem TempArray(i)
Next i
End Sub

Die alphabetische Sortierung funktioniert, allerdings werden die Einträge, die mit einem Umlaut beginnen, am Ende der Liste einsortiert (nach Z).
Gibt es eine Möglichkeit, dass Umlaute nicht am Ende erscheinen, sondern z.B. Ä vor B?
Vielen Dank schon mal für eure Tipps!
Grüße
Tom

Bild

Betrifft: AW: Listbox Einträge alphabetisch sortieren
von: Peter Feustel
Geschrieben am: 17.11.2015 14:05:52
Hallo Tom,
Beim Sortieren lässt sich unter Sortierreihenfolge die benutzerdefinierte Reihenfolge auswählen.
Dort kannst du Dein eigenes Alphabet generieren.
Gruß Peter

Bild

Betrifft: AW: Listbox Einträge alphabetisch sortieren ÄÖÜ
von: Daniel
Geschrieben am: 17.11.2015 14:13:24
Hi
Variante 1
schreibe dir eine Function, welche Ä durch Ae usw tauscht und verwende diese dann für den Vergleich:


Function UmlauteTauschen(byVal txt as string) as string
txt = replace(txt, "Ä", "Ae")
txt = Replace(txt, "Ö", "Oe")
txt = Replace(txt, "Ü", "Ue")
UmlauteTauschen = txt
End Function
und im Vergleich dann:
If UmlauteTauschen(TempArray(i)) > UmlauteTauschen(TempArray(j)) Then

Variante 2:
schreibe die Listboxliste in eine Exceltabelle, sortiere sie dort und lies sie dann wieder aus der Tabelle in die Listbox ein.
gruß Daniel

Bild

Betrifft: Verwende nicht >, sondern vbFkt 'StrComp' mit ...
von: Luc:-?
Geschrieben am: 17.11.2015 15:49:52
…dem 3.Argument vbTextCompare, Tom!
Als Ergebnis erhält man -1, 0, 1, je nachdem, was man womit vglt und ob das Eine <, = oder > das/dem Andere/n ist.
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: oder ganz einfach so...
von: Peter Feustel
Geschrieben am: 17.11.2015 17:55:49
Hallo Tom,
würde es nicht dieses Makro tun?

Private Sub UserForm_Initialize()
Dim ArLi   As Object   ' das Object der ArrayList
Dim vTemp  As Variant  ' ein temporärer Array zur Aufnahme der Tabellenblattdaten
Dim lIndx  As Long     ' For/Next Schleifen-Index - hier der Index zum obigen Array
    
   Set ArLi = CreateObject("System.Collections.ArrayList") ' Verweis auf das Object setzen
   
   With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
      vTemp = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
   End With
      
   For lIndx = 1 To UBound(vTemp) ' Spalte A als temporären Array auswerten
      If Not ArLi.contains(vTemp(lIndx, 1)) Then ArLi.Add vTemp(lIndx, 1) ' Unikate sammeln
   Next lIndx
   
   ArLi.Sort            ' sortieren
   vTemp = ArLi.toArray ' in ein Array kopieren
   
   With ListBox1
      .List = vTemp
      .ListIndex = -1
   End With
End Sub

Gruß Peter

Bild

Betrifft: Option Compare Text
von: Nepumuk
Geschrieben am: 17.11.2015 19:02:10
Hallo,
nach Option Explicit einfach Option Compare Text einfügen.
Gruß
Nepumuk

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Listbox Einträge alphabetisch sortieren Umlaute"