Excel活动表|活动表|分类

时间:2018-02-22 00:17:14

标签: excel-vba excel-formula excel-2016 vba excel

我希望对活动工作表/活动表进行排序。我将使用一个每天都在增长的excel文件,每天都会有一个新的表/表。我希望自动设置一个不同的员工来完成工作。

我发现使用 ActiveSheet.ListObjects(1)会选择活动表,但排序会导致问题。

如果我使用以下格式,那将是一次性排序,最终对我的员工来说是无用的。

Sub Test()

    ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort.SortFields.Add _
        Key:=Range("Table1[[#All],[Client Name]]"), SortOn:=xlSortOnValues, Order _
        :=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

我尝试了以下但是没有用。

 Sub Test()

    ActiveSheet.ListObjects(1).Sort.SortFields.Clear
    ActiveSheet.ListObjects(1).Sort.SortFields.Add _
        Key:=Range("ActiveSheet.ListObjects(1)[[#All],[Client Name]]"), SortOn:=xlSortOnValues, Order _
        :=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.ListObjects(1).Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

所有代码都返回到表格的标签。如何将其修改为仅使用活动内容?

1 个答案:

答案 0 :(得分:0)

我相信你下面的代码会做你所期望的,主要的不同之处在于Key,我使用了ListObject的name属性来获取正确的名称:

 Sub Test()
    ActiveSheet.ListObjects(1).Sort.SortFields.Clear
    ActiveSheet.ListObjects(1).Sort.SortFields.Add _
        Key:=Range(ActiveSheet.ListObjects(1).Name & "[[#All],[Client Name]]"), SortOn:=xlSortOnValues, Order _
        :=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.ListObjects(1).Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub