这是我密码
Sub SortMultipleColumns(myline As String)
With Worksheets("Result-Inactive").Sort
.SortFields.Add Key:=Range("A1"), Order:=xlAscending
.SortFields.Add Key:=Range("D1"), Order:=xlAscending
.SortFields.Add Key:=Range("J1"), Order:=xlAscending
.SetRange Range("A1:C" & myline)
.Header = xlYes
.Apply
End With
End Sub
我得到以下错误,我不明白为什么“运行时错误'1004'排序引用无效。请确保它在您要排序的日期内,然后第一个排序依据框不相同或为空。当我单击调试时,.apply被突出显示
有什么建议吗?
5条答案
按热度按时间yfjy0ee71#
这里只是重申Jeeped的回答,但略有不同:
1)
myline
实际上应定义为Long或Integer2)使用
Key:=Range("A1")
声明的范围应定义为同一工作表3)
D
和J
的键在.setRange
之外,同样,.setRange
也应该定义为在同一工作表上我坚持使用您的代码,但将
ws
工作表定义添加到所有范围,并将设置范围更改为最多包含J
列我假设
myline
在那里,因为有时你只想排序一个数据区域的顶部集合。我还添加了一行到clear
的所有排序域,以防你在这个工作表上运行许多不同的排序器。tzxcd3kk2#
您试图将D列和J列作为辅助排序条件,但将它们从排序区域中排除。另外,
Range("xn")
不一定属于Result-Inactive工作表,如果不将其合成为.Range("xn")
。请尝试使用其他VBA排序方法,而不要使用“宏”记录器生成的方法。u0njafvf3#
试试这个:
g9icjywg4#
选择范围Range(“A:X”)。选择
结束子组件
cbeh67ev5#
将您的数据转换成表格,然后使用vba,使用listObjects使用工作表找到我的表格。然后我找到列1、2和3的索引。然后我使用表格区域和列索引添加SortFields。
这不起作用:
这是可行的: