我已经logging了一个excel的vbasorting,但不理解代码行

我是VBA新手,因此我经常在Excel中logging任何东西,并使用logging的代码。 不幸的是我不明白以下的sorting代码。

Private Sub SortType() ActiveWorkbook.Worksheets("Requirements").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Requirements").Sort.SortFields.Add Key:=Range( _ "C6:C" & usedRows), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Requirements").Sort .SetRange Range("B6:T" & usedRows) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub 

什么第一行Sort.SortFields.Clear (我真的需要它?)和什么我需要With方法?

感谢您的帮助! 🙂

第一行清除任何现有的sorting信息(请注意,它实际上没有sorting任何东西)。 With块简单地保存了写入ActiveWorkbook.Worksheets("Requirements").Sort 。 没有它,代码将不得不是:

 Private Sub SortType() ActiveWorkbook.Worksheets("Requirements").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Requirements").Sort.SortFields.Add Key:=Range( _ "C6:C" & usedRows), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ActiveWorkbook.Worksheets("Requirements").Sort.SetRange Range("B6:T" & usedRows) ActiveWorkbook.Worksheets("Requirements").Sort.Header = xlGuess ActiveWorkbook.Worksheets("Requirements").Sort.MatchCase = False ActiveWorkbook.Worksheets("Requirements").Sort.Orientation = xlTopToBottom ActiveWorkbook.Worksheets("Requirements").Sort.SortMethod = xlPinYin ActiveWorkbook.Worksheets("Requirements").Sort.Apply End Sub 

第一行Sort.SortFields.Clear是什么

从这里 , SortField对象包含Worksheet,ListObject和AutoFilter对象的所有sorting信息

所以它删除任何现有的自动AutoFiltering

而为了什么我需要With方法?

它整理代码(也就是说,你的代码行会比ActiveWorkbook.Worksheets("Requirements").Sort.SetRange Range("B6:T" & usedRows) ,但是当使用macroslogging器的时候, With

作为一个例子,你可以像这样修改你的代码:

重新切割

 Sub BottomUp() Dim ws As Worksheet Dim rng1 As Range Set ws = Worksheets("Requirements") ws.Sort.SortFields.Clear Set rng1 = ws.Range(ws.[B6], ws.Cells(Rows.Count, "T").End(xlUp)) rng1.Sort ws.[c6], xlAscending End Sub 

SortFields是一个值的集合,它描述了sorting范围中的哪些列被sorting,以何种方式,因此在执行新sorting之前删除这些数据是有意义的。

With .. End With句法简单,简单地保存重复input随后打开的对象名称With语句。