当我使用宏录制器对列表对象(表(进行排序时,它会产生:
ActiveWorkbook.Worksheets("Output").ListObjects("Table4").Sort.SortFields.Add2
在我的 Excel 版本中运行良好。但是,这不会在其他 Excel 上编译。将其更改为.Add
可以解决问题。
谷歌表示,.Add2
只存在于ChartObjects中 - 但记录器将其记录为ListObject中 - 它在这里工作,但在另一个Excel(相同版本(中不起作用。
什么是.Add2
?为什么我的 Excel 认为这是正确的方法?
这不是答案;我想补充一下我的发现。应该使用评论可能(但不能(。
- 我可以确认Excel 365 Business宏记录器记录
Sort.SortFields.Add2
,如果您在列表对象或工作表上定义过滤器。 - 我无法确认宏在另一台机器上的相同 Excel 版本上不起作用(对我来说它可以工作;使用 Excel 16.0.10228.20080 32 位测试(。
- MSDN 上没有针对
SortFields
集合 (1( 记录Add2
方法,而是针对其他对象(因此"仅适用于 ChartObject"不是正确的(。 - VBA对象库(我的Excel版本,见上文(
Add2
列为SortFields
类中的函数;Add
和Add2
之间的唯一区别似乎是Add2
还有一个可选的参数[SubField]
。
结论:我猜(但这只是一个猜测!(Add2
是功能扩展,出于兼容性原因,已使用新名称实现。也许宏录制器在这种情况下总是使用最新的功能。 Yor 可以使用Add
,除非需要SubField
参数。
我仍然喜欢像埃德温·埃德勒(Edwin Ederle(所要求的那样获得更深入的理解。我遇到这篇文章是因为完全相同的情况:使用记录器学习编码排序功能,想知道Add2
,并询问谷歌。如果您搜索"vba sortfields add2"=>,这个问题是(其中一个(谷歌点击,也许值得在这里提供更多信息。
Add2
是SortFields上的一种方法,仅在较新版本的Excel中可用。 与Add
的区别在于Add2
支持子字段参数。 例如,在地理字段中,您可以按人口排序。
宏录制器使用Add2
来支持按子字段排序。 如果您不需要按子字段排序,则可以将记录的代码更改为Add
,它将适用于旧版本的Excel。