Sorting continuous forms
Endlosformulare sortieren wie ein Profi – mit einem Klick! 💥
Wer kennt sie nicht – die kleinen, feinen Sortierpfeile, überall zu finden: Im Datei-Explorer, in Excel, auf Webseiten, in fast jedem modernen Programm. Nur in Access? Fehlanzeige
👉 Was Access nicht kann, basteln wir uns halt selbst! 💪
Schaut mal hier – so cool kann Access aussehen:
🔧 Was brauchen wir dafür?
✅ Die Hauptfunktion ToggleSort() regelt alles: Sortierrichtung umschalten, Icons setzen
✅ Die Wrapper-Funktion SortColumn() ruft die Hauptfunktion auf und übergibt alle Parameter
✅ Ein paar CommandButtons als Spaltenüberschriften
✅ Drei Icons um die Sortierrichtung anzuzeigen
🤔 Warum zwei Funktionen?
Ganz einfach: Anstatt für jede Spaltenüberschrift (Button) ein eigenes Click-Event zu bauen, nutzen wir eine zentrale Funktion im Formular. Beim Klick übergeben wir nur den Feldnamen an SortColumn(), und diese kümmert sich um den Rest.

Ablauf (Debug):
- Klick auf Überschrifts-Button
- SortColumn("Feldname") wird aufgerufen
- Diese übergibt Form, Feldname, ActivControl an ToggleSort()
- ToggleSort() Sortiert dann in der entsprechenden Form die gewünschte Spalte (ASC/DESC) und ändert das Icon entsprechend.
🧠 Die Funktionen
🛠️ 1. Die Hauptfunktion: ToggleSort()
Public Sub ToggleSort(frm As Form, columnName As String, sortControl As Control)
Dim currentSort As String ' current sort of the form
Dim newSort As String ' sorting string to handover to the form
Dim sortDir As String ' sorting direction (ASC/DESC)
Dim sortPicture As String ' name of the picture (MySysResources) for the sorting commandButton
Dim ctrl As Control ' to loop thru the commandbuttons
Application.Echo False
' get current sorting
currentSort = Nz(frm.OrderBy, "")
' Standard: Sort in ascending order if no sorting is available
sortDir = "ASC"
sortPicture = "sort_ASC"
' Check whether it is already sorted
If InStr(1, currentSort, "[" & columnName & "] DESC", vbTextCompare) > 0 Then
' New sort order: ascending
sortDir = "ASC"
sortPicture = "sort_ASC"
ElseIf InStr(1, currentSort, "[" & columnName & "] ASC", vbTextCompare) > 0 Then
' New sort order: descending
sortDir = "DESC"
sortPicture = "sort_DESC"
ElseIf InStr(1, currentSort, "[" & columnName & "]", vbTextCompare) > 0 Then
' If only column name without direction: assume descending
sortDir = "DESC"
sortPicture = "sort_DESC"
End If
' Set new sort order
newSort = "[" & columnName & "] " & sortDir
frm.OrderBy = newSort
frm.OrderByOn = True
' Reset icons for the commandButtons (goes thru all controls in the form)
For Each ctrl In frm.Controls
If ctrl.ControlType = acCommandButton And Left(ctrl.Name, 8) = "cmdSort_" Then ' only commandButtons which starts with cmdSort_
ctrl.Picture = "sort_X"
End If
Next ctrl
' Set icon for the active control
sortControl.Picture = sortPicture
Application.Echo True
End Sub
🧰 2. Die Wrapper-Funktion: SortColumn()
Private Function SortColumn(sColumn As String)
Call ToggleSort(Me, sColumn, Me.ActiveControl)
End Function
👀 Die Icons woher? Noch nie von MSysResources gehört?
Dann wird’s Zeit. Einfach Systemobjekte einblenden (Rechtsklick → Navigationsoptionen) – und da liegt sie, die versteckte Icon-Goldgrube. Du kannst die Icons übrigens austauschen – mach dein Access-Design einzigartig!
▶️ sort_X → neutral
🔼 sort_ASC → aufsteigend
🔽 sort_DESC → absteigend
🔘 Warum Buttons statt Labels für die Überschriften?
Ganz einfach:
✅ Icons
✅ Mouseover-Effekte
✅ Cursor-Symbol ändern
Labels können das alles nicht. Und wir wollen ja schließlich ein bisschen UX-Magie, oder?
🚀 Fazit
Mit minimalem Aufwand bringt ihr endlich komfortables Sortieren auch in eure Access-Formulare. Einmal implementieren – überall verwenden. Und das ohne hässlichen VBA-Wildwuchs. Probiert es aus und lasst Access wieder strahlen! ✨
🧙♂️ Das Beste daran?
✅ Nur einmal implementieren,
✅ beliebig viele Spalten sortieren,
✅ komplett wartbar
✅ ...und Access sieht plötzlich nicht mehr aus wie 2003 😅
🔥 Und jetzt seid ihr dran!
Lasst uns gemeinsam ACCESS auf das nächste Level bringen.
Denn eins ist klar: Standard war gestern. Heute, wird ACCESS sexy. 🔥
Mit dieser kleinen Erweiterung wird euer Access-Interface nicht nur intuitiver, sondern auch ein ganzes Stück „sexier“.
Die ausführliche Beschreibung und alle Hinweise findet ihr direkt im Code – wie gewohnt gut dokumentiert.
Version: 1.0
