当我使用宏记录器对 ListObject(表)进行排序时,它会生成:
ActiveWorkbook.Worksheets("Output").ListObjects("Table4").Sort.SortFields.Add2
在我的 Excel 版本中运行得非常好。但是,这不能在其他 Excel 上编译。将其更改为 .Add
即可解决问题。
Google 表示 .Add2
仅适用于 ChartObjects - 但记录器将其记录为 ListObject - 并且它可以在此处工作,但不能在其他 Excel(相同版本)中工作。
什么是.Add2
?为什么我的 Excel 认为这是正确的方法?
最佳答案
这不是一个答案;我想补充一下我发现的情况。也许应该使用评论(但不能)。
- 我可以确认 Excel 365 Business 宏记录器记录
Sort.SortFields.Add2
如果您在 ListObject 或 Worksheet 上定义过滤器。 - 我无法确认该宏在另一台计算机上的相同 Excel 版本上不起作用(对我来说它有效;使用 Excel 16.0.10228.20080 32 位进行测试)。
Add2
MSDN 上没有记录SortFields
的方法集合( 1 ),但适用于其他一些对象(因此“仅适用于 ChartObject”是不正确的)。- VBA 对象库(我的 Excel 版本,见上文)列出
Add2
作为SortFields
中的函数类(class);Add
之间的唯一区别和Add2
好像是Add2
还有一个可选参数[SubField]
.
结论:我猜(但这只是猜测!)Add2
to 是功能的扩展,出于兼容性原因已使用新名称实现。在这种情况下,宏录制器可能总是使用最新的函数。
您可以使用Add
除非您需要 SubField
范围。
我仍然希望获得更深入的了解,就像 Edwin Ederle 所要求的那样。我遇到这篇文章是因为完全相同的情况:使用记录器学习编码排序函数,想知道 Add2
,并询问谷歌。如果您搜索“vba sortfields add2”,这个问题是第一个谷歌搜索结果(其中之一)=>也许值得在这里提供更多信息。
关于vba - 排序字段的 add2 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51148316/