VBA 对象数组排序算法分享
Function SrotObjectByProperty(objsToSort As Variant, PropertyName As String, Optional 降序 As Boolean = True) If IsEmpty(objsToSort) Then Exit Function If InStr(TypeName(objsToSort), "()") < 1 Then Exit Function 'IsArray() is somewhat broken: Look for brackets in the type name Dim m As Long, n As Long, compareRtn As Integer Dim temp As Variant, temp1 As Variant For m = LBound(objsToSort) To UBound(objsToSort) For n = m To UBound(objsToSort) Set temp = objsToSort(n) Set temp1 = objsToSort(m) 'https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/strcomp-function Dim nValue As Variant, mValue As Variant nValue = CallByName(objsToSort(n), PropertyName, VbGet) mValue = CallByName(objsToSort(m), PropertyName, VbGet) compareRtn = VBA.StrComp(nValue, mValue, vbTextCompare) If VBA.IsNumeric(nValue) Then If nValue < mValue And 降序 Then 'ElementSwap objsToSort(n), objsToSort(m) Set objsToSort(n) = temp1 Set objsToSort(m) = temp ElseIf nValue > mValue And Not 降序 Then 'ElementSwap objsToSort(n), objsToSort(m) Set objsToSort(n) = temp1 Set objsToSort(m) = temp End If Else If compareRtn = -1 And 降序 Then 'ElementSwap objsToSort(n), objsToSort(m) Set objsToSort(n) = temp1 Set objsToSort(m) = temp ElseIf compareRtn = 1 And Not 降序 Then 'ElementSwap objsToSort(n), objsToSort(m) Set objsToSort(n) = temp1 Set objsToSort(m) = temp End If End If Next n Next m End Function
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具