在 VBA 中,要按降序(从大到小)对数组或范围中的值进行排序,可以使用内置的
Sort
函数并指定排序的参数为
xlDescending
,如下所示:
Sub SortDescending()
Dim arr(1 To 5) As Integer
Dim i As Integer
' 填充数组
arr(1) = 3
arr(2) = 5
arr(3) = 1
arr(4) = 4
arr(5) = 2
' 按降序排序数组
Call SortArrayDescending(arr)
' 输出排序后的数组
For i = 1 To 5
Debug.Print arr(i)
Next i
End Sub
Sub SortArrayDescending(ByRef arr() As Integer)
' 使用 VBA 的内置 Sort 函数对数组进行排序,参数为 xlDescending
Call VBA.Sort(arr, MatchCase:=False, Order:=xlDescending)
End Sub
在上面的示例中,首先创建了一个包含 5 个整数值的数组 arr
,然后调用了名为 SortArrayDescending
的子程序来对数组进行降序排序。在 SortArrayDescending
中,我们调用了 VBA 的内置 Sort
函数,并将排序参数设置为 xlDescending
,这将使其按从大到小的顺序对数组进行排序。
最后,在主程序 SortDescending
中,我们调用了 SortArrayDescending
子程序来对数组进行排序,并使用 Debug.Print
函数将排序后的数组输出到控制台上。
如果你要按照降序对 Excel 工作表中的单元格进行排序,也可以使用类似的方法,并将范围作为参数传递给 Sort
函数,如下所示:
Sub SortDescending()
Dim rangeToSort As Range
' 获取要排序的范围
Set rangeToSort = ActiveSheet.Range("A1:A5")
' 按降序排序范围
Call SortRangeDescending(rangeToSort)
End Sub
Sub SortRangeDescending(ByRef rangeToSort As Range)
' 使用 VBA 的内置 Sort 函数对范围进行排序,参数为 xlDescending
Call rangeToSort.Sort(Key1:=rangeToSort, Order1:=xlDescending, Header:=xlNo)
End Sub
在上面的示例中,我们首先获取要排序的范围,然后调用了名为 SortRangeDescending
的子程序来对范围进行降序排序。在 SortRangeDescending
中,我们同样使用 VBA 的内置 Sort
函数,并将排序参数设置为 xlDescending
,这将使其按从大到小的顺序对范围中的值进行排序。注意,我们还将 Header
参数设置为 xlNo
,以确保不将表头包含在排序中。