VBA在Excel中sorting会select表格内容

我有一个Excel电子表格,根据单独的工作表中的数据在一张纸上放置排行榜表格。 我监视数据表上的更改,然后自动sorting排行榜表。 一切似乎工作正常,但sorting表中的排行榜表的内容仍然被选中。 如何无缝地清除select而不影响数据表上的任何select。

我甚至是一个好孩子,并使用With而不是Select命令来完成这个任务。

这是我有什么:


Sheet2(代码) – 数据表

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 

Sheet1(代码) – 排行榜表

 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 

如果工作表不活跃,这似乎是表格的怪癖。 您可以通过使用旧的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 

例如。

如何添加类似的东西

Worksheets("Leaderboard").Select Worksheets("Leaderboard").Range("A1").Select Worksheets("Data").Select

select一个单元格?