2014-04-17 31 views
0

下午好堆棧溢出食客:的Excel 1004運行時錯誤排序表

我和許多人一樣,正試圖排序表時,得到了可怕的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。

我使用主宏使用下面的代碼來運行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宏,我上「適用」運行時錯誤線。

有沒有人知道如何通過這個錯誤,爲什麼它在錯誤的「。應用」排序步驟時被第二個宏調用,但手動運行時工作?

回答

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 
+0

我感謝您的協助。顯然,運行Excel 2007的人,它工作得很好。但在Win7和Win8上運行Excel 2010時,我們在原始宏上收到錯誤。我會嘗試編輯並回複評論。 – CCRaiff

+0

Tim,抱歉,使用您的代碼仍會返回運行時錯誤,並突出顯示.Apply行(第3行代碼)。這已在使用Office 2010的Win7計算機和使用Office 2010的Win8計算機上進行了測試。但是,它在使用Office365的Win8計算機上工作。 – CCRaiff

+0

我在Excel 2010上,Win7 –

0

我看不出有什麼毛病你貼什麼和它的作品對我來說,當我一步通過它從你的MASTER_MACRO子直接調用或時。表單是否受到保護?

+0

不,不保護。顯然,我的宏在Excel 2007中工作正常,但是如上所述在2010年使用Win7和Win8引發錯誤。還沒有嘗試過Excel360。 – CCRaiff