排序表时出现Excel 1004运行时错误

时间:2014-04-17 17:59:39

标签: excel vba sorting excel-vba

良好的下午堆栈溢出顾客:

我和许多其他人一样,在尝试对表格进行排序时遇到了可怕的1004运行时错误...但这里是踢球者....当你手动转到开发者>时,宏会起作用。宏并运行宏。

宏旨在按以下四个步骤对名为“Compiled_Data”的表内的数据进行排序:首先按日期最新到最新排序(数据在A列中),然后按字母顺序按承包商名称排序(数据在B列中) ),然后按客户名称(C列中的数据),然后按说明(D列中的数据)。

这是宏(由录制创建):

    Sub Sort_Compiled_Data_Sheet()

        Sheets("Compiled_Data").Activate
        Range("A3").Select
        Range("A4").Activate
        ActiveWorkbook.Worksheets("Compiled_Data").ListObjects("Compiled_Data").Sort. _
            SortFields.Clear
        ActiveWorkbook.Worksheets("Compiled_Data").ListObjects("Compiled_Data").Sort. _
            SortFields.Add Key:=Range("Compiled_Data[Date]"), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Compiled_Data").ListObjects("Compiled_Data").Sort. _
            SortFields.Add Key:=Range("Compiled_Data[Contractor]"), SortOn:= _
            xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Compiled_Data").ListObjects("Compiled_Data").Sort. _
            SortFields.Add Key:=Range("Compiled_Data[Customer]"), SortOn:= _
            xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Compiled_Data").ListObjects("Compiled_Data").Sort. _
            SortFields.Add Key:=Range("Compiled_Data[Item]"), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal

        With ActiveWorkbook.Worksheets("Compiled_Data").ListObjects("Compiled_Data"). _
            Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
       End With

所以,就像我说的那样,代码在手动运行时效果很好。但是,当我使用第二个宏调用宏运行时,我每次都会在“.apply”行上得到可怕的运行时错误1004。

我使用Master Macro使用以下代码运行Sort_Compiled_Data_Sheet宏:

    Sub MASTER_MACRO()
        Application.Run "Fill_Compiled_Data_Sheet"
        Application.Run "Sort_Compiled_Data_Sheet"
        Application.Run "Column_Width_All_Sheets"
    End Sub

每次我使用MASTER_MACRO运行Sort_Compiled_Data_Sheet宏时,都会在“.apply”行上出现运行时错误。

有没有人知道如何克服这个错误,为什么在第二个宏调用时“.apply”排序步骤会出错,但在手动运行时却会出错?

1 个答案:

答案 0 :(得分:2)

这对我有用:

Sub Sort_Compiled_Data_Sheet()

     Dim sht as worksheet

     Set sht = ActiveWorkbook.Worksheets("Compiled_Data")

     sht.Activate

     With sht.ListObjects("Compiled_Data").Sort

        .SortFields.Clear

        .SortFields.Add Key:=Range("Compiled_Data[Date]"), SortOn:=xlSortOnValues, _
                         Order:=xlAscending

        .SortFields.Add Key:=Range("Compiled_Data[Contractor]"), _
                         SortOn:=xlSortOnValues, Order:=xlAscending


        .SortFields.Add Key:=Range("Compiled_Data[Customer]"), _
                            SortOn:=xlSortOnValues, Order:=xlAscending

        .SortFields.Add Key:=Range("Compiled_Data[Item]"), SortOn:=xlSortOnValues, _
                            Order:=xlAscending


         .Header = xlYes
         .MatchCase = False
         .Orientation = xlTopToBottom
         .SortMethod = xlPinYin
         .Apply

    End With

End Sub