Excel 使用VBA进行排序时出现错误结果
我有这个代码来对Excel表格进行排序Excel 使用VBA进行排序时出现错误结果,excel,sorting,vba,Excel,Sorting,Vba,我有这个代码来对Excel表格进行排序 'for the ascending order Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscen
'for the ascending order
Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlAscending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, Header:=xlNo
'for the descending order
Range("A14:CB" & lastRow).Sort key1:=Range(Col & "14:" & Col & lastRow), Order1:=xlDescending, Header:=xlNo, key2:=Range("C14:C" & lastRow), Order2:=xlAscending, Header:=xlNo
这是我在Col=J
这就是我在Col=J
两者显然都错了。VBA代码中是否有我没有看到的错误?Excel的排序功能非常好,例如,选择一个范围并运行以下操作:
Option Explicit
Sub TestMe()
Selection.Sort key1:=Selection, Order1:=xlDescending
End Sub
在代码中,应该检查定义范围的变量。例如,lastRow
和Col
。在代码顶部写下如下内容:
debug.print lastRow
debug.print Col
lastRow
是17(数据从14开始),而Col
是10(当选择J列时),那么您对这里的范围(Col&“14:&Col&lastRow)
有什么期望呢?例如,如果您转到即时窗口并编写?Col&“14:&Col&lastRow
它会给您什么?我想您在下一次错误恢复时有的地方
?在下一次错误恢复时
已被删除,但问题仍然存在。在范围(…)
中,我希望充当范围(“J14:J17”)
在即时窗口中写入您要求的内容,返回1014:1017
范围(“A14:CE”和lastRow)。排序键1:=范围(单元格(14,列),单元格(lastRow,列)),顺序1:=xlAscending,标题:=xlNo,键2:=范围(“C14:C”和lastRow),顺序2:=Ascending,Header:=xlNo
确实解决了问题