我正在尝试根据点击的列标题对表中的excel列进行排序.到目前为止,我有下面的代码,它工作正常.我单击标题,表格按我单击的列标题排序.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(ActiveCell, Range("active[#Headers]")) Is Nothing Then
Dim KeyRange As Range
Set KeyRange = Range(Target.Address)
SortOrder = xlAscending
If Target.Value = "price" Then
SortOrder = xlDescending
End If
If Target.Value = "profit" Then
SortOrder = xlDescending
End If
Range("active").Sort Key1:=KeyRange, Header:=xlYes, Order1:=SortOrder
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
当我单击不同的标题单元格时,将取消先前的排序并设置new.这就是我想改变的地方.我想添加二级排序标准,而不是更改主要标准.
我想按多个标准排序,只需连续点击不同的标题单元格即可.例如,首先按价格排序,然后按截止日期排序,然后按其他方式排序.这种组合可能不同,所以我不能真正使用vba排序标准1,2,3并在一次通过中进行排序.
为了清除排序顺序,我使用这个:
ActiveWorkbook.Worksheets("active").ListObjects("active").Sort.SortFields. _
Clear
Run Code Online (Sandbox Code Playgroud)
你有什么想法,如何实现这个目标?
请不要问我为什么我按照它的编写方式编写代码.我不知道.不幸的是,我不是编码员,我粗略地理解代码是如何工作的,但我没有更深入的知识.我只是通过搜索然后尝试它是如何工作的(或更常见的是它不起作用)将来自不同来源的代码放在一起.