我有一个Excel电子表格,根据单独表格中的数据在一张纸上保存排行榜。我监控数据表上的更改,然后自动对排行榜表进行排序。一切似乎都运行良好但排行榜表的内容在我的排序后被选中。如何在不影响数据表选择的情况下无缝清除选择。
我甚至是一个好孩子,使用使用代替选择命令完成排序。
这就是我所拥有的:
Sub Worksheet_Change(ByVal target As Range)
' Check if the item changed is in group area
If Not Intersect(target, target.Worksheet.Range("F7:H93")) Is Nothing Then
ActiveWorkbook.Worksheets("Leaderboard").SortLeaderboard
End If
End Sub
Sub SortLeaderboard()
Dim lo As Excel.ListObject
Set lo = ActiveWorkbook.Worksheets("Leaderboard").ListObjects("Table3")
With lo
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("Table3[Total]"), SortOn:=xlSortOnValues, Order:= _
xlDescending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("Table3[Name]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
答案 0 :(得分:1)
如果表格未激活,这似乎是表格的一个怪癖。您可以使用旧的Sort方法来避免它:
Sub SortLeaderboard()
Dim lo As Excel.ListObject
Set lo = Me.ListObjects("Table3")
With lo
.Sort.SortFields.Clear
.Range.Sort key1:=.ListColumns("Total").DataBodyRange.Cells(1), _
Order1:=xlDescending, DataOption1:=xlSortNormal, _
Key2:=.ListColumns("Name").DataBodyRange.Cells(1), _
Order2:=xlAscending, DataOption2:=xlSortNormal, _
SortMethod:=xlPinYin, MatchCase:=False
End With
End Sub
例如。
答案 1 :(得分:0)
如何添加类似
的内容 Worksheets("Leaderboard").Select
Worksheets("Leaderboard").Range("A1").Select
Worksheets("Data").Select
选择单个单元格?