排序不活动/可见的工作表

时间:2017-06-22 22:47:56

标签: excel vba excel-vba

所以我使用下面的代码对工作表进行排序,它的工作原理......但是只有当你在工作表上时它才会尝试排序。如果您不是,则发送错误:

  

运行时错误“1004”:排序参考无效。确保   它在您要排序的数据中,以及第一个排序框   是不一样的或空白。

我将需要隐藏此工作表,因此将其激活并不是一个真正的选择。我在代码中错过了一行吗?

由于

CODE:

Sheet23.Columns("A:C").Sort key1:=Range("A2"), order1:=xlAscending, _ 
               key2:=Range("B2"), order2:=xlDescending, Header:=xlYes

2 个答案:

答案 0 :(得分:2)

您应始终使用工作表限定Range()或Cells(),否则它们将引用ActiveSheet:

Sheet23.Columns("A:C").Sort key1:=Sheet23.Range("A2"), order1:=xlAscending, _ 
                            key2:=Sheet23.Range("B2"), order2:=xlDescending, _
                            Header:=xlYes

答案 1 :(得分:0)

您正在使用参考单元格的相对参考:

Sheet23.Columns("A:C").Sort key1:=Range("A2"), order1:=xlAscending, _ 
           key2:=Range("B2"), order2:=xlDescending, Header:=xlYes

=Range("A2")将始终引用活动表。

ThisWorkbook.Sheets("Sheet23").Columns("A:C").Sort key1:=ThisWorkbook.Sheets("Sheet23").Range("A2"), order1:=xlAscending, _ 
           key2:=ThisWorkbook.Sheets("Sheet23").Range("B2"), order2:=xlDescending, Header:=xlYes

应该给你想要的结果。