Sorting by columnheaders in listviews

By | 2002-06-01

This allows a user to sort the contents of a listview by clicking on a column header in report-mode. Clicking again will sort descending.

Original Author: Adam Hansen

Assumptions

This assumes that a ListView named ‘ListView1’ exists on a form, and that code exists to put values into it. Also, the ListView style-property must be ‘report’.
Paste the code into the ‘General Declarations’ area of your form (below any other global declarations you may have) and substitute ‘ListView1’ with the name of your listview.

Code

Dim iCol As Integer
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As_ MSComctlLib.ColumnHeader)
  
  ' When a ColumnHeader object is clicked, the ListView control is
  ' sorted by the subitems of that column.
  ' Set the SortKey to the Index of the ColumnHeader - 1
  
  If ColumnHeader.Index - 1 <> iCol Then
    ListView1.SortOrder = 0
  Else
    ListView1.SortOrder = Abs(ListView1.SortOrder - 1)
  End If
  
  ListView1.SortKey = ColumnHeader.Index - 1
  
  ' Set Sorted to True to sort the list.
  
  ListView1.Sorted = True
  iCol = ColumnHeader.Index - 1
End Sub

Author: dwirch

Derek Wirch is a seasoned IT professional with an impressive career dating back to 1986. He brings a wealth of knowledge and hands-on experience that is invaluable to those embarking on their journey in the tech industry.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.