ListBox sortieren

Listbox alphabetisch sortieren

  • UserForm erstellen
  • ListBox befüllen
  • ListBox alphabetisch sortieren mit dem BubbleSort Verfahren
  • ListBox mit mehreren Spalten sortieren
  • ListBox aufsteigend und absteigend sortieren
  • ListBox Sortierspalte festlegen
  • Makro in einer UserForm über Button ausführen

 

Code

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub ListBoxSortieren(lb As MSForms.ListBox, Optional Aufsteigend As Boolean = True, Optional Sortierspalte As Long = 0)
'Variablen dimensionieren
Dim ZeileAußen As Long
Dim ZeileInnen As Long
Dim temp As Variant
Dim Spalte As Long
With lb
'Äußere Schleife über Elemente der ListBox
For ZeileAußen = 0 To .ListCount - 2
'Innere Schleife über Elemente der ListBox
For ZeileInnen = 0 To .ListCount - 2
'Aufsteigend oder absteigend?
If Aufsteigend = True Then
'Wörter vergleichen aufsteigend
If LCase(.List(ZeileInnen, Sortierspalte)) > LCase(.List(ZeileInnen + 1, Sortierspalte)) Then
'Schleife über alle Spalten
For Spalte = 0 To .ColumnCount - 1
'Elemente tauschen
temp = .List(ZeileInnen + 1, Spalte)
.List(ZeileInnen + 1, Spalte) = .List(ZeileInnen, Spalte)
.List(ZeileInnen, Spalte) = temp
Next Spalte
End If
Else
'Wörter vergleichen absteigend
If LCase(.List(ZeileInnen, Sortierspalte)) < LCase(.List(ZeileInnen + 1, Sortierspalte)) Then
'Schleife über alle Spalten
For Spalte = 0 To .ColumnCount - 1
'Elemente tauschen
temp = .List(ZeileInnen + 1, Spalte)
.List(ZeileInnen + 1, Spalte) = .List(ZeileInnen, Spalte)
.List(ZeileInnen, Spalte) = temp
Next Spalte
End If
End If
Next ZeileInnen
Next ZeileAußen
End With
'Bereitgestellt von VBATrainer: www.vbatrainer.de
End Sub
Private Sub ListBoxSortieren(lb As MSForms.ListBox, Optional Aufsteigend As Boolean = True, Optional Sortierspalte As Long = 0) 'Variablen dimensionieren Dim ZeileAußen As Long Dim ZeileInnen As Long Dim temp As Variant Dim Spalte As Long With lb 'Äußere Schleife über Elemente der ListBox For ZeileAußen = 0 To .ListCount - 2 'Innere Schleife über Elemente der ListBox For ZeileInnen = 0 To .ListCount - 2 'Aufsteigend oder absteigend? If Aufsteigend = True Then 'Wörter vergleichen aufsteigend If LCase(.List(ZeileInnen, Sortierspalte)) > LCase(.List(ZeileInnen + 1, Sortierspalte)) Then 'Schleife über alle Spalten For Spalte = 0 To .ColumnCount - 1 'Elemente tauschen temp = .List(ZeileInnen + 1, Spalte) .List(ZeileInnen + 1, Spalte) = .List(ZeileInnen, Spalte) .List(ZeileInnen, Spalte) = temp Next Spalte End If Else 'Wörter vergleichen absteigend If LCase(.List(ZeileInnen, Sortierspalte)) < LCase(.List(ZeileInnen + 1, Sortierspalte)) Then 'Schleife über alle Spalten For Spalte = 0 To .ColumnCount - 1 'Elemente tauschen temp = .List(ZeileInnen + 1, Spalte) .List(ZeileInnen + 1, Spalte) = .List(ZeileInnen, Spalte) .List(ZeileInnen, Spalte) = temp Next Spalte End If End If Next ZeileInnen Next ZeileAußen End With 'Bereitgestellt von VBATrainer: www.vbatrainer.de End Sub
Private Sub ListBoxSortieren(lb As MSForms.ListBox, Optional Aufsteigend As Boolean = True, Optional Sortierspalte As Long = 0)

'Variablen dimensionieren
Dim ZeileAußen As Long
Dim ZeileInnen As Long
Dim temp As Variant
Dim Spalte As Long

With lb

    'Äußere Schleife über Elemente der ListBox
    For ZeileAußen = 0 To .ListCount - 2
    
        'Innere Schleife über Elemente der ListBox
        For ZeileInnen = 0 To .ListCount - 2
        
            'Aufsteigend oder absteigend?
            If Aufsteigend = True Then
        
                'Wörter vergleichen aufsteigend
                If LCase(.List(ZeileInnen, Sortierspalte)) > LCase(.List(ZeileInnen + 1, Sortierspalte)) Then
                
                    'Schleife über alle Spalten
                    For Spalte = 0 To .ColumnCount - 1
                    
                        'Elemente tauschen
                        temp = .List(ZeileInnen + 1, Spalte)
                        .List(ZeileInnen + 1, Spalte) = .List(ZeileInnen, Spalte)
                        .List(ZeileInnen, Spalte) = temp
                        
                    Next Spalte
    
                End If
                
            Else
            
                'Wörter vergleichen absteigend
                If LCase(.List(ZeileInnen, Sortierspalte)) < LCase(.List(ZeileInnen + 1, Sortierspalte)) Then
                
                    'Schleife über alle Spalten
                    For Spalte = 0 To .ColumnCount - 1
                    
                        'Elemente tauschen
                        temp = .List(ZeileInnen + 1, Spalte)
                        .List(ZeileInnen + 1, Spalte) = .List(ZeileInnen, Spalte)
                        .List(ZeileInnen, Spalte) = temp
                        
                    Next Spalte
    
                End If
                
            End If
    
        Next ZeileInnen

    Next ZeileAußen

End With

'Bereitgestellt von VBATrainer: www.vbatrainer.de

End Sub

Teile diesen Beitrag

Empfehlungen für dich

Erhalte regelmäßig Tipps & Tricks rund um die Themen Excel, VBA und Design!
Grundlagentraining
Top Beiträge