我记录了一个excel vba排序,但没有';我不懂代码行
我是VBA新手,因此我经常在excel中记录任何内容并使用记录的代码。不幸的是,我不理解下面的排序代码我记录了一个excel vba排序,但没有';我不懂代码行,excel,vba,Excel,Vba,我是VBA新手,因此我经常在excel中记录任何内容并使用记录的代码。不幸的是,我不理解下面的排序代码 Private Sub SortType() ActiveWorkbook.Worksheets("Requirements").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Requirements").Sort.SortFields.Add Key:=Range( _ "C6:C" & usedRo
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
第一行对.SortFields.Clear进行排序是什么(我真的需要它吗?)以及我需要With方法做什么
谢谢你的帮助!:)
第一行Sort.SortFields.Clear是什么
从中,SortField对象包含工作表、ListObject和自动筛选对象的所有排序信息
因此,它将删除任何现有的自动筛选等
我需要这个方法做什么
它会整理代码(否则您的行会更长,例如ActiveWorkbook.Worksheets(“Requirements”).Sort.SetRange Range(“B6:T”&usedRows)
,但使用宏记录器时,通常会在和中包含冗余代码
例如,您可以按如下方式精简代码:
重现
第一行清除任何现有的排序信息(请注意,它实际上不会对任何内容进行排序)。With块只保存写入ActiveWorkbook.Worksheets(“要求”)。对该块内每一行上的部分进行排序。没有它,代码必须是:
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
SortFields
是一组值,这些值描述排序范围中的哪些列被排序以及排序方式,因此在执行新排序之前删除这些数据是有意义的
With..End With
是一种语法速记,它只需重复键入开头With
语句后面的对象名即可。你的链接真的是要返回到这篇文章吗?只是wondrin,还是你不小心粘贴了错误的链接?
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