Yes you can sort on columns when using the listview control. Add the listview control to a user form, with this code in the userform code module. You can now click column headers to sort data.
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With ListView1 .Sorted = True .SortKey = ColumnHeader.Index - 1 .SortOrder = lvwAscending End With End Sub Private Sub UserForm_Initialize() Dim lngIndex As Long Dim vntColumn0 As Variant Dim vntColumn1 As Variant Dim vntColumn2 As Variant Dim lvwItem As ListItem With ListView1 .ListItems.Clear .View = lvwReport Do While .ColumnHeaders.Count < 3 .ColumnHeaders.Add , , CStr(.ColumnHeaders.Count + 1) Loop vntColumn0 = Array("E", "D", "C", "B", "A") vntColumn1 = Array("1", "2", "3", "4", "5") vntColumn2 = Array("A", "B", "C", "D", "E") For lngIndex = LBound(vntColumn0) To UBound(vntColumn0) Set lvwItem = .ListItems.Add(, , vntColumn0(lngIndex)) lvwItem.SubItems(1) = vntColumn1(lngIndex) lvwItem.SubItems(2) = vntColumn2(lngIndex) Next End With
sorting in ListView
Shrek.NET
George Waters
Yes you can sort on columns when using the listview control.
Add the listview control to a user form, with this code in the userform code module.
You can now click column headers to sort data.
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With ListView1
.Sorted = True
.SortKey = ColumnHeader.Index - 1
.SortOrder = lvwAscending
End With
End Sub
Private Sub UserForm_Initialize()
Dim lngIndex As Long
Dim vntColumn0 As Variant
Dim vntColumn1 As Variant
Dim vntColumn2 As Variant
Dim lvwItem As ListItem
With ListView1
.ListItems.Clear
.View = lvwReport
Do While .ColumnHeaders.Count < 3
.ColumnHeaders.Add , , CStr(.ColumnHeaders.Count + 1)
Loop
vntColumn0 = Array("E", "D", "C", "B", "A")
vntColumn1 = Array("1", "2", "3", "4", "5")
vntColumn2 = Array("A", "B", "C", "D", "E")
For lngIndex = LBound(vntColumn0) To UBound(vntColumn0)
Set lvwItem = .ListItems.Add(, , vntColumn0(lngIndex))
lvwItem.SubItems(1) = vntColumn1(lngIndex)
lvwItem.SubItems(2) = vntColumn2(lngIndex)
Next
End With
End Sub