von Beaker s.a. » 03. Dez 2020, 17:53
Hallo Wolfram,
ChrW(9650) bzw. ChrW(9660) funzen problemlos, - die Anzeige ist ein kleiner
schwarzer Pfeil.
Ich habe das mal mit Listfeldern gemacht. Zum Sortieren habe ich Labels
verwendet. Um das für mehrere Spalten zu nutzen habe ich das in eine
öffentliche Sub gekapselt. Dieser wird das Sortierlabel und das Listcontrol
übergeben.
- Code: Alles auswählen
Public Sub SpaltenSortieren( _
ByVal ctlLabel As Control, _
ByVal ctlListe As Control)
'---------------------------------------------------------------------------------------
' Purpose : sortiert die übergebene Liste entsprechend der angeklickten Spalte;
' : - auf bzw. ab; - wird durch die Eigenschaft "Marke" (Tag) des Überschriften-
' : Controls gesteuert
' Parameter :
' : ctlLabel = Überschriften-Control (Label) des zu sortierenden Listfeldes
' : Der Name MUSS dem Feldnamen in der zugrunde liegenden Tabelle/Abfrage
' : entsprechen
' : ctlListe = Listfeld
'---------------------------------------------------------------------------------------
Dim strSQL As String
Dim strRowS As String
strRowS = ctlListe.RowSource
'letztes ORDER BY abschneiden
strSQL = Left$(strRowS, InStr(1, strRowS, "ORDER BY") - 1)
'neues anhängen
strSQL = strSQL & " ORDER BY " & ctlLabel.Name & " " & ctlLabel.Tag
ctlListe.RowSource = strSQL
If ctlLabel.Tag = " DESC" Then
ctlLabel.Tag = " ASC"
ctlLabel.Caption = Left$(ctlLabel.Caption, Len(ctlLabel.Caption & vbNullString) - 1) & ChrW(9650)
Else
ctlLabel.Tag = " DESC"
ctlLabel.Caption = Left$(ctlLabel.Caption, Len(ctlLabel.Caption & vbNullString) - 1) & ChrW(9660)
End If
' ctlListe.SetFocus
' ctlListe.Selected(0) = True
End Sub
Aufruf
- Code: Alles auswählen
Call SpaltenSortieren( _
ctlLabel:=Me.Controls("DeinSortierlabel"), _
ctlListe:=Me.Controls("DeinListfeld"))
gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.