当我使用宏记录器对ListObject(表)进行排序时,它会产生:
ActiveWorkbook.Worksheets("Output").ListObjects("Table4").Sort.SortFields.Add2
在我的Excel版本中效果很好。但是,这不能在其他Excel上编译。将其更改为
.Add
可解决该问题。Google表示
.Add2
仅对于ChartObjects存在-但是记录器为ListObject记录了它-并且它在这里有效,但在其他Excel(相同版本)中不起作用。什么是
.Add2
?为什么我的Excel认为这是正确的方法? 最佳答案
这不是答案。我想补充一下我发现的内容。也许应该使用评论(但无法)。
如果您在ListObject或Worksheet上定义过滤器,我可以确认Excel 365商业宏记录器记录Sort.SortFields.Add2
。
我无法确认该宏不能在另一台计算机上的同一Excel版本上运行(对我而言,它可以正常工作;已使用32位Excel 16.0.10228.20080测试)。
在MSDN上,没有为Add2
集合(1)记录SortFields
方法,而是为其他服务器对象记录了记录(因此“仅适用于ChartObject”不正确)。
VBA对象库(我的Excel版本,请参见上文)将Add2
列为SortFields
类中的Function; Add
和Add2
之间的唯一区别似乎是Add2
还有一个可选参数[SubField]
。
结论:我猜(但这只是一个猜测!),Add2
是对功能的扩展,出于兼容性原因,已经使用新名称实现了该扩展。在这种情况下,宏记录器可能总是使用最新功能。
除非需要Add
参数,否则您可以使用SubField
。
我仍然希望像Edwin Ederle要求的那样加深了解。由于完全相同的情况,我碰到了这篇文章:使用记录器来学习编码排序功能,对Add2
感到疑惑,并询问google。如果您搜索“ vba sortfields add2” =>,那么这个问题是第一个Google匹配(其中之一)=>也许值得在此处提供更多信息。