【问题标题】:VBA error 1004 when trying to sort data based on multiple keys尝试基于多个键对数据进行排序时出现 VBA 错误 1004
【发布时间】: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),这显然没有意义。

标签: vba excel


【解决方案1】:

工作代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多