Excel 使用设置的范围进行排序,但使用一次后不会更改值
我这里有一个代码,它的基本目标工程。。。 双击标题将按D列排序,然后按双击的列排序 是的,我知道这可以通过多重排序更容易地实现,但出于……原因,这不是一个选项 问题是,在代码运行一次之后,它“似乎”总是将我的“Set KeyRange”设置为单击的值 如果我手动使用表格,并尝试双击一个新标题,它仍然会根据第一次选择的标题对其进行排序 我怎样才能解决这个问题?谢谢我尝试在接近尾声时添加一个新的“设置关键点范围”命令,但没有效果,或者破坏了它Excel 使用设置的范围进行排序,但使用一次后不会更改值,excel,vba,sorting,set,Excel,Vba,Sorting,Set,我这里有一个代码,它的基本目标工程。。。 双击标题将按D列排序,然后按双击的列排序 是的,我知道这可以通过多重排序更容易地实现,但出于……原因,这不是一个选项 问题是,在代码运行一次之后,它“似乎”总是将我的“Set KeyRange”设置为单击的值 如果我手动使用表格,并尝试双击一个新标题,它仍然会根据第一次选择的标题对其进行排序 我怎样才能解决这个问题?谢谢我尝试在接近尾声时添加一个新的“设置关键点范围”命令,但没有效果,或者破坏了它 Private Sub Worksheet_Before
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim KeyRange As Range
Dim ColumnCount As Integer
ColumnCount = Range("A1:D12").Columns.Count
Cancel = False
If Target.Row = 1 And Target.Column <= ColumnCount Then
Cancel = True
Set KeyRange = Range(Target.Address)
End If
With ActiveSheet.Sort
.SortFields.Add Key:=Range("D1"), Order:=xlAscending
.SortFields.Add Key:=KeyRange, Order:=xlAscending
.SetRange Range("A1:D12")
.Header = xlYes
.Apply
End With
End Sub
Private子工作表\u双击之前(ByVal目标作为范围,Cancel作为布尔值)
调暗键范围作为范围
Dim ColumnCount为整数
ColumnCount=范围(“A1:D12”).Columns.Count
取消=错误
如果Target.Row=1和Target.Column您的代码对我来说几乎完美无瑕。我所做的唯一一件事就是排除在If…然后…End If
IfTarget
不在第1行或超过4列中
此外,我还添加了.SortFields.Clear
,您需要清除以前的订单
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim KeyRange As Range
Dim ColumnCount As Integer
ColumnCount = Range("A1:D12").Columns.Count
Cancel = False
If Target.Row = 1 And Target.Column <= ColumnCount Then
Cancel = True
Set KeyRange = Range(Target.Address)
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("D1"), Order:=xlAscending
.SortFields.Add Key:=KeyRange, Order:=xlAscending
.SetRange Range("A1:D12")
.Header = xlYes
.Apply
End With
End If
End Sub
Private子工作表\u双击之前(ByVal目标作为范围,Cancel作为布尔值)
调暗键范围作为范围
Dim ColumnCount为整数
ColumnCount=范围(“A1:D12”).Columns.Count
取消=错误
如果Target.Row=1和Target.Column,谢谢!我认为那种清晰是我这一方所缺少的最大的东西。