这是基于昨天的 VBA 排序的进阶版:按鼠标单击的标题列位置,动态地排序。
案例:
我们还是用昨天这张表格来举例。
当鼠标单击 B1:E1 区域时,鼠标单击哪一列标题行,就自动按照该列从大到小的顺序排序。
方法:
1. 按 Alt F11 打开 VBE,输入以下代码:
Sub Worksheet_SelectionChange(ByVal Target As Range) '选择的单元格发生变化后就会触发Worksheet的SelectionChange事件
Dim iColumn As Integer '声明 iColumn 变量
If Target.Column <= 5 And Target.Row = 1 Then '如果列数<=5(即A到E列的区域),并且在第1行(即标题行,如果想点击该列的任何一行都实现排序效果,那么可以把 Target.Row = 1 去掉)
If Target.Column <> iColumn Then '如果鼠标点击的列数不等于 iColumn,那么将点击数出赋值给 iColumn
iColumn = Target.Column
End If
Range('A1:E9').CurrentRegion.Sort KEY1:=Cells(1, iColumn), ORDER1:=xlDescending, _
Header:=xlYes '在区域 A1:E9 内,按鼠标单击的第一行单元格降序排列
End If
End Sub
2. 按下 F5,或点击 VBE 菜单栏的 三角箭头,运行宏,可以看到我们需要的效果了:
联系客服