尝试对三个不同值的数据进行排序时运行时错误1004

时间:2013-02-22 14:35:00

标签: excel-vba runtime-error excel-2010 vba excel

我已经阅读了至少十五篇不同的文章,并尝试了许多不同的可能解决方案。我正在尝试使用下面的VBA代码将可变大小的工作表排序为三个不同的级别。

当我单步执行代码时,我在排序的.apply参数中得到错误1004。

运行时错误'1004':

排序参考不是vald。确保它在您的数据中 想要排序,第一个排序依据框不相同或空白。

有人可以提出解决此问题的原因吗?

Sub Subbing()

Dim LastCell as String

Range("A2").End(xlDown).Select

LastCell = Selection.Offset(0, 13).Address
Worksheets("Sheet1").Activate

With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SortFields.Clear
        .SetRange Range("A2", LastCell)
        .SortFields.Add Key:=ActiveWorkbook.Worksheets("Sheet1").Range("R2"), _ SortOn:=xlSortOnValues, Order:=xlAscending
        .SortFields.Add Key:=ActiveWorkbook.Worksheets("Sheet1").Range("S2"), _ SortOn:=xlSortOnValues, Order:=xlAscending
        .SortFields.Add Key:=ActiveWorkbook.Worksheets("Sheet1").Range("D2"), _ SortOn:=xlSortOnValues, Order:=xlAscending
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

End With
End Sub

我期待您的回复。我知道这是一个常见问题,但我已经尝试了所有广泛建议的解决我的问题的方法,但没有用。

亲切的问候

皮特

2 个答案:

答案 0 :(得分:2)

在我看来,你选择了A:N来排序,但是正在对R和S以及D的值进行排序。通过Step模式运行并在LastCell上观看 - 如果我是对的,那就赢了对你来说实际上你想要的东西还远远不够。

答案 1 :(得分:1)

...您的标准范围超出了排序区域 - 您不能这样做。

我的意思是您的排序范围将在A列和N列之间(A之后的13列),但您的标准在列R&列中。 S上。

如果扩展排序范围,一切都会有效。

希望这可以解决所有问题。