【发布时间】:2018-09-14 18:22:33
【问题描述】:
我正在尝试根据 3 个键对数据进行排序,但第三个键必须有一个自定义列表才能排序。当我尝试运行它时,我的排序出现 1004 错误。
With Worksheets(srcSheet).Range("A3:" & CC2 & XY)
.Cells.Sort Key1:=.Range("D3:D" & XY), Order1:=xlAscending, _
Key2:=.Range("C3:C" & XY), Order2:=xlAscending, _
Key3:=.Range("E3:E" & XY), Order3:=xlAscending, _
CustomOrder:="Team1, Team5, Leader, Team3, Team10", _
Header:=xlNo
End With
我不确定我哪里出错了,我在网上查看了其他建议,甚至录制了一个宏,但正如您所知,宏代码非常冗长,我希望它尽可能高效。
感谢任何帮助。
提前致谢。
感谢 Ashleedawg,在下面添加了正确的代码:
With ActiveWorkbook.ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("D3:D" & XY), Order:=xlAscending
.SortFields.Add Key:=Range("C3:C" & XY), Order:=xlAscending
.SortFields.Add Key:=Range("E3:E" & XY), Order:=xlAscending, CustomOrder:="Team1, Team5, Leader, Team3, Team10"
.SetRange Range("A3:" & CC2 & XY)
.Header = xlNo
.Apply
End With
【问题讨论】:
-
先对排序条件一个一个做,看看有没有被标记为无效的。
-
我建议删除除一个排序键之外的所有排序键,让它工作,然后一次添加另一个,在两者之间进行测试。有关更多故障排除方法,另请参阅 Chip Pearson 的Debugging VBA。
-
Worksheets(srcSheet).Range("A3:" & CC2 & XY) 是您期望的地址吗?
-
变量
srcSheet设置?Worksheets(srcSheet)存在吗?您打算从活动工作簿中对工作表进行排序? -
实际上 - 您的
With指的是一系列单元格,然后每个键都有一个.指的是“单元格内的单元格”。例如:Key1 指的是:Worksheets(srcSheet).Range("A3:" & CC2 & XY).Range("D3:D" & XY),这显然没有意义。