Excel 2010 Worksheet_Deactivate()自动sorting

我是VBA noob。 我试图让页面自动sorting,只要我离开那个页面。 该页面对各个列有六个手动sorting,但是在第一个列上需要用alpha来查找另一个页面。 所以当用户手动sorting另一个字段时,我希望它离开页面时恢复到所需的列sorting。 我已经试过了我find的六个不同的macros,并向它们投了几个编辑,但是他们都没有做任何事情。 这是我最近的尝试:

Private Sub Worksheet_Deactivate() With Me.Range("B6:K604").CurrentRegion .Sort Key1:=Range("B6:B604"), Order1:=xlAscending, _ Header:=xlNo, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom, DataOption1:=xlSortNormal End With End Sub 

尝试这个:

 Private Sub Worksheet_Deactivate() Dim sortkey As Range, sortrng As Range With me Set sortkey = .Range("B6:B604") Set sortrng = .Range("B6:K604") End With me.Sort.SortFields.Clear me.Sort.SortFields.Add Key:=sortkey, SortOn:=xlSortOnValues, _ Order:=xlDescending, DataOption:=xlSortNormal With me.Sort .SetRange sortrng .Header = xlNo .MatchCase = False .Orientation = xlSortColumns .SortMethod = xlPinYin .Apply End With End Sub 

好的,这是尝试和testing
关键是要先清除现有的filter。

投入另一个事件:

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("Sheet1").Activate With Sheets("Sheet1").Range("B2:C9").CurrentRegion .Sort Key1:=Range("B6:B604"), Order1:=xlAscending, _ Header:=xlNo, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom, DataOption1:=xlSortNormal End With End Sub 

激活表单,sorting并保存…