良好的下午堆栈溢出顾客:
我和许多其他人一样,在尝试对表格进行排序时遇到了可怕的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”排序步骤会出错,但在手动运行时却会出错?
答案 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