excel - 我已经记录了一个 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" & 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 方法的目的是什么?

感谢您的帮助! :)

最佳答案

第一行清除任何现有的排序信息(注意它实际上并没有排序任何东西)。 With block 简单地保存了在该 block 内的每一行上编写 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

关于excel - 我已经记录了一个 excel vba 排序但不理解代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906771/

相关文章:

excel - 如何从VBA写入单元格

excel - 代码执行被中断

excel - 提取包含特定单词的句子

vba - 使用宏在 Excel 中进行多选,如何取消选择选择

c# - Excel.Interop 的 Worksheet.UsedRange 属性中可能存在错误?

excel - 从 Excel VBA 访问 Lotus Notes 数据库 - 如何选择 COLUMNVALUES?

events - 从外接程序中打开 Excel 工作簿事件?

python - 用 Pandas 重命名excel中的特定列

Excel VBA 7.1 错误 '430' : on Set X = New WorkSheet

excel - 将复选框控件暗淡设置为用户窗体复选框