【问题标题】:Sorting a Range based on sheet variable with VBA使用 VBA 根据工作表变量对范围进行排序
【发布时间】:2019-11-08 11:31:23
【问题描述】:

场景:我有一张工作表,正在尝试对其中的一部分进行排序。在工作表内,我有一个下拉列表,允许我选择值(aaa、bbb、ccc)。这些值中的每一个都表示列,在选择时,代码应按该列对该范围进行排序。

问题:该过程适用于下拉列表中的一个值,但不适用于其他值(它运行,但没有任何反应)。

代码:

Sub ratecolumnssort()

    Dim LastRow As Integer
    Dim sortColumn As String, sortAgent As String

    shtMonitoring.Activate
    LastRow = shtMonitoring.Cells(shtMonitoring.rows.count, "B").End(xlUp).row

    sortAgent = shtMonitoring.Cells(8, 9) ' this is where the dropdown with values aaa, bbb and ccc is

    If sortAgent = "aaa" Then
        sortColumn = "F"
    ElseIf sortAgent = "bbb" Then
        sortColumn = "H"
    ElseIf sortAgent = "ccc" Then
        sortColumn = "J"
    End If

    With ActiveSheet.sort
        .SortFields.Add key:=Range(sortColumn & "11"), Order:=xlAscending
        .SetRange Range("B11", "N" & LastRow )
        .Header = xlYes
        .Apply
    End With

End Sub

问题:我在这里做错了什么?

【问题讨论】:

  • 未测试,但我认为每次排序都需要事先清除。在每次排序之前尝试一下 lke ActiveSheet..AutoFilter.Sort.SortFields.Clear

标签: excel vba


【解决方案1】:

您需要先清除排序设置。

 With ActiveSheet.Sort
        .SortFields.Clear 'add this line
        'as before

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 2015-12-12
    • 2018-05-13
    • 2019-11-21
    相关资源
    最近更新 更多