Excel VBA排序,.Apply上的错误1004

时间:2014-09-25 11:41:37

标签: excel vba sorting excel-vba

我在VBA中使用sort时遇到问题。我看到这个帖子答案对我不起作用Sort in VBA

我相信您可以对最多nr条记录进行排序。那是对的吗?我想在工作表/表格中对4个条件进行排序,其中 188,000 记录。
我总是在.Apply声明中收到错误:"run-time error '1004': application-defined or object-defined error"

在我的代码下面:

Sub Sort_Table()

    Dim sht As Worksheet

    Set sht = ActiveWorkbook.Worksheets("Sheet1")

    sht.Activate

    With sht.ListObjects("Table1").Sort

        .SortFields.Clear
        .SortFields.Add Key:=Range("Table1[Date]"), SortOn:=xlSortOnValues,    Order:=xlAscending ', DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Table1[Country Code]"), SortOn:=xlSortOnValues, Order:=xlAscending ', DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Table1[Rating]"), SortOn:=xlSortOnValues, Order:=xlAscending ', DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Table1[Segment]"), SortOn:=xlSortOnValues, Order:=xlAscending ', DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

    End With

End Sub 

1 个答案:

答案 0 :(得分:0)

潜在问题

实际上,您可能不应该Apply内的With,因为您的对象在With块结束后确实已更新。
例如,当您使用.SortFields时,您的参数(Apply等...)尚未设置。我不是百分百肯定,因为我现在没有EXCEL进行测试,并且看起来并非所有人都对此代码有这个问题,但是这可能是一个原因。

(潜在)解决方案

尝试做:

With sht.ListObjects("Table1").Sort

    .SortFields.Clear
    .SortFields.Add Key:=Range("Table1[Date]"), SortOn:=xlSortOnValues,    Order:=xlAscending ', DataOption:=xlSortNormal
    .SortFields.Add Key:=Range("Table1[Country Code]"), SortOn:=xlSortOnValues, Order:=xlAscending ', DataOption:=xlSortNormal
    .SortFields.Add Key:=Range("Table1[Rating]"), SortOn:=xlSortOnValues, Order:=xlAscending ', DataOption:=xlSortNormal
    .SortFields.Add Key:=Range("Table1[Segment]"), SortOn:=xlSortOnValues, Order:=xlAscending ', DataOption:=xlSortNormal
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin

End With

sht.ListObjects("Table1").Sort.Apply

告诉我这是否解决了这个问题

其他潜在问题/解决方案

  • 您处理的工作表(排序)受到保护
  • 查看此问题:Excel VBA Sort

希望它无论如何都有帮助......