excel - excel vba在列表视图上排序int值
问题描述
我需要按它们的 int 值对我的值进行排序,例如 1 2 3 10 1000
但我的代码像这样的字符串 1 10 100 2 3
这是我对 EXCEL VBA 的排序代码:
Private Sub lstview1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With lstview1
.SortKey = ColumnHeader.Index - 1
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
.Sorted = True
End With
结束子
我怎样才能为excel vba解决这个问题
解决方案
Listview 按字母顺序排序,这是它的限制之一。这是我为您创建的用于对数字数据进行排序的快速示例。
代码
Option Explicit
Dim i As Long
Private Sub UserForm_Initialize()
With ListView1
.View = lvwReport
.ColumnHeaders.Add , , "Number", 50
.ColumnHeaders.Add , , "Fruit", 50
For i = 1000 To 1 Step -1
.ListItems.Add(, , i).SubItems(1) = "Fruit" & i
Next
End With
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With ListView1
If ColumnHeader.Index = 1 Then
SortDataWithNumbers
Else
.Sorted = True
End If
End With
End Sub
Sub SortDataWithNumbers()
Dim sTemp As String * 10
Dim lvCount As Long
With ListView1
lvCount = .ListItems.Count
For i = 1 To lvCount
sTemp = vbNullString
If .SortKey Then
'RSet - right align a string within a string variable.
RSet sTemp = .ListItems(i).SubItems(.SortKey)
.ListItems(i).SubItems(.SortKey) = sTemp
Else
RSet sTemp = .ListItems(i)
.ListItems(i).Text = sTemp
End If
Next
.Sorted = True
For i = 1 To lvCount
If .SortKey Then
.ListItems(i).SubItems(.SortKey) = _
LTrim$(.ListItems(i).SubItems(.SortKey))
Else
.ListItems(i).Text = LTrim$(.ListItems(i))
End If
Next
End With
End Sub
在行动
推荐阅读
- npm - npm init 没有获取 node_modules 文件夹中的所有包
- angular - 在 Springboot 中使用 Angular 会话
- python - 如何使用 ID、地址、地区、城市、州等列名获取逗号分隔的以下数据的单独列
- javascript - 如何修复 TypeError:PromiseResolve 在 aura js 控制器中调用非对象?
- xamarin - 如何从课堂打开页面?
- vector - 试图理解向量中的手动执行
- python-3.x - 如何为 10,000 个数据框记录创建字典,然后访问每个字典记录以进行一些计算?
- android - 是否可以在 Android 中修改来电数据?
- javascript - 通过从服务器端获取数据在客户端显示字符串
- selenium - 如何将硒与灯塔集成