我已经阅读了至少十五篇不同的文章,并尝试了许多不同的可能解决方案。我正在尝试使用下面的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
我期待您的回复。我知道这是一个常见问题,但我已经尝试了所有广泛建议的解决我的问题的方法,但没有用。
亲切的问候
皮特
答案 0 :(得分:2)
在我看来,你选择了A:N来排序,但是正在对R和S以及D的值进行排序。通过Step模式运行并在LastCell上观看 - 如果我是对的,那就赢了对你来说实际上你想要的东西还远远不够。
答案 1 :(得分:1)
...您的标准范围超出了排序区域 - 您不能这样做。
我的意思是您的排序范围将在A列和N列之间(A之后的13列),但您的标准在列R&列中。 S上。
如果扩展排序范围,一切都会有效。
希望这可以解决所有问题。