listview只能排文本 如果是数字要转换为文本。 例子: 我这个函数更棒!真正使数字也能正确排序调用方法: call truesort(listview控件名,排序的列名)Public Function TrueSort(LV As ListView, ColHead As ColumnHeader) '真正使数字也能正确排序 Dim I As Long LV.Sorted = True LV.SortKey = ColHead.Index - 1 If ColHead.Alignment = lvwColumnRight Then '使数字也能排序 For I = 1 To LV.ListItems.Count LV.ListItems(I).SubItems(ColHead.Index - 1) = Format(LV.ListItems(I).SubItems(ColHead.Index - 1), "000000000000000.00") Next I End If If LV.SortOrder = lvwAscending Then LV.SortOrder = lvwDescending Else LV.SortOrder = lvwAscending End If If ColHead.Alignment = lvwColumnRight Then '使数字也能排序 For I = 1 To LV.ListItems.Count LV.ListItems(I).SubItems(ColHead.Index - 1) = Format(LV.ListItems(I).SubItems(ColHead.Index - 1), "Standard") Next I End If LV.Sorted = False End Function
如果是数字要转换为文本。
例子:
我这个函数更棒!真正使数字也能正确排序调用方法:
call truesort(listview控件名,排序的列名)Public Function TrueSort(LV As ListView, ColHead As ColumnHeader) '真正使数字也能正确排序
Dim I As Long
LV.Sorted = True
LV.SortKey = ColHead.Index - 1
If ColHead.Alignment = lvwColumnRight Then '使数字也能排序
For I = 1 To LV.ListItems.Count
LV.ListItems(I).SubItems(ColHead.Index - 1) = Format(LV.ListItems(I).SubItems(ColHead.Index - 1), "000000000000000.00")
Next I
End If
If LV.SortOrder = lvwAscending Then
LV.SortOrder = lvwDescending
Else
LV.SortOrder = lvwAscending
End If
If ColHead.Alignment = lvwColumnRight Then '使数字也能排序
For I = 1 To LV.ListItems.Count
LV.ListItems(I).SubItems(ColHead.Index - 1) = Format(LV.ListItems(I).SubItems(ColHead.Index - 1), "Standard")
Next I
End If
LV.Sorted = False
End Function