清除所有排序字段VBA

时间:2015-03-03 15:34:26

标签: excel vba sorting excel-vba

我正在尝试通过excel VBA对数据进行排序,但它已经按不同的标头排序。在设置新字段之前,如何清除所有排序字段?我试过Sort.SortFields.Clear但是没有用。任何帮助将不胜感激。这是我正在使用的代码:

 Sheet9.Activate

Columns("J:J").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(1, "J").Value = "InternalID"
Set rng2 = FindHeader("CLIENT NAME", Sheet9.Name)


Count = 1

Sheet9.Cells.Select

With Sheet9.Sort
        .SortFields.Clear
        .SortFields.Add Key:=rng2, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

2 个答案:

答案 0 :(得分:0)

ActiveSheet.Range("Your_Range_Value").AutoFilter Field:=1

我对每个具有排序字段的列都执行此操作,然后将其清除。其中Field:= X是您要清除的范围内的列号。

这就是我的工作簿中的内容。 Sheet1是工作表的代号,rng是表示范围值(“ B4:G1500”)的字符串

' Clear all filters 
Sheet1.Range(rng).AutoFilter Field:=1 
Sheet1.Range(rng).AutoFilter Field:=2
Sheet1.Range(rng).AutoFilter Field:=3
Sheet1.Range(rng).AutoFilter Field:=4
Sheet1.Range(rng).AutoFilter Field:=5
Sheet1.Range(rng).AutoFilter Field:=6

答案 1 :(得分:-1)

Dim myData As Range

Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set myData = Selection

myData.Select
myData.AutoFilter

这不会删除排序,但会打开所有原始文件,而不会更改之前的排序。