12

我正在尝试对单独的工作表中的范围进行排序。但是,我不断收到此消息:

 '1004': "The sort reference is not valid. Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank. 

我检查了范围,它们都存在并且正在工作。

代码如下:

Dim EmpBRange As String

EmpBRange = Sheets("EmployeeData").Cells(Cells.Rows.Count, "B").End(xlUp).Row

Worksheets("EmployeeData").Range("K3:K" & EmpBRange).Sort Key1:=Range("K3:K" & EmpBRange), Order1:=xlAscending, Header:=xlGuess, _
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
       DataOption1:=xlSortNormal

提前致谢

4

2 回答 2

39

我怀疑您需要完全限定Key1范围,因为您正在从不同的工作表中调用代码:

Worksheets("EmployeeData").Range("K3:K" & EmpBRange).Sort Key1:=Worksheets("EmployeeData").Range("K3:K" & EmpBRange)

这通常是一个好主意。

于 2013-03-08T15:18:09.707 回答
0

我一直在尝试使用该Sort方法,但来自 Powershell。而我只得到了The sort reference is not valid一部分而没有 Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank一部分。我就是这样来到这里的。

我的问题是由于忽略了Sort电话的论点。如果您仔细查看文档,您会看到Type在键和顺序参数的中间隐藏了一个参数:

表达式 .Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

我已经通过$null了那个,我的方法调用开始工作了。下一个奇怪的事情是,由于某种原因Key2 / Order2被忽视了。我正在使用所有 3 个键对数据进行排序。解决方法是在方法调用中交换参数Key2 / Order2Key3 / Order3奇怪的是,它奏效了。

于 2017-01-17T21:13:37.060 回答