【发布时间】:2016-09-16 03:18:43
【问题描述】:
我一直在编写这个 VBA 代码来帮助我对我拥有的信息数据库(姓名、发票编号、地址等)进行排序。我最近学会了如何在不选择工作表中的实际范围的情况下在 VBA 中进行排序,并且我尝试使用多个键(key1、key2、key3)进行排序,但没有运气。运行此代码时,我不断收到运行时错误 450:参数数量错误或属性分配无效。我希望能够对一个数据范围进行多次排序,例如,按 F 列对范围(A:K)进行排序,然后按 E,然后按 B 等。
这是我用来对列进行排序的代码:
ActiveSheet.Range("A:K").Sort _
Key1:=ActiveSheet.Range("F2"), Order1:=xlAscending, HEADER:=xlYes, Ordercustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
Key2:=ActiveSheet.Range("E2"), Order2:=xlAscending, HEADER:=xlYes, Ordercustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption2:=xlSortNormal, _
Key3:=ActiveSheet.Range("D2"), Order3:=xlAscending, HEADER:=xlYes, Ordercustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption3:=xlSortNormal
这很奇怪,因为起初我尝试运行前 2 个键(key1,key2)并且效果很好,然后我复制并粘贴下来创建下一个键(key3),然后出现了错误。当我尝试调试时,上面的所有代码都会突出显示。
我能想到的唯一其他方法是运行在工作表中选择范围 (A:K) 的代码,但我不想这样做。
【问题讨论】:
-
您为
HEADER、OrderCustom和Orientation多次指定参数。我会先尝试删除重复的参数。查看参数列表here。 -
我会先录制一个你想要的宏。复制并粘贴代码在这里进行比较,或者它可能是足够的信息,所以你可以自己修复它
标签: vba excel sorting runtime-error