gpt4 book ai didi

vba - 在 VBA 中对多个键进行排序;运行时错误 450 : Wrong number of arguments or invalid property assignment

转载 作者:行者123 更新时间:2023-12-03 09:05:37 27 4
gpt4 key购买 nike

我一直在编写这个 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)的代码,但我不想这样做。

最佳答案

看起来您正在尝试修改一些录制的宏代码。记录的 Range.Find method 的记录代码非常冗长。这就是您应该要求的一切。

With Sheets("Sheet1")
With Intersect(.Range("A1").CurrentRegion, .Range("A:K"))
.Cells.Sort Key1:=.Columns(6), Order1:=xlAscending, _
Key2:=.Columns(5), Order2:=xlAscending, _
Key3:=.Columns(4), Order3:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
End With

TBH,不知道能不能简单的加 Ordercustom:=1到每一行。 IIRC,一次不能对多个字段执行自定义排序。在这种情况下,执行三个排序,每个排序都有 Ordercustom:=1但请记住以相反的顺序进行;例如首先是 D 列,然后是 E 列,最后是 F 列的主排序。

请注意,使用此方法最多可以将主要排序和次要排序设置为三列。如果您需要更多,请先对它们进行排序,然后对最后三个流行列进行后续排序。

关于vba - 在 VBA 中对多个键进行排序;运行时错误 450 : Wrong number of arguments or invalid property assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523277/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com