1

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

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

运行时错误“1004”:

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

任何人都可以提出这个问题的原因或解决方案吗?

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

我期待着您的回复。我知道这是一个常见问题,但我尝试了所有广泛建议的解决问题的方法,但无济于事。

亲切的问候

皮特

4

2 回答 2

2

在我看来,您选择了 A:N 进行排序,但是正在对 R 和 S 以及 D 的值进行排序。通过 Step 模式运行它并在 LastCell 上放置一个手表 - 如果我是对的,那不会是足够远让你真正排序你想要的东西。

于 2013-02-22T14:41:36.410 回答
1

...您的标准范围在排序区域之外-您不能这样做。

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

如果你扩大你的排序范围,一切都会奏效。

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

于 2013-02-22T14:41:55.333 回答