当我使用宏记录器对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; AddAdd2之间的唯一区别似乎是Add2还有一个可选参数[SubField]


结论:我猜(但这只是一个猜测!),Add2是对功能的扩展,出于兼容性原因,已经使用新名称实现了该扩展。在这种情况下,宏记录器可能总是使用最新功能。
除非需要Add参数,否则您可以使用SubField

我仍然希望像Edwin Ederle要求的那样加深了解。由于完全相同的情况,我碰到了这篇文章:使用记录器来学习编码排序功能,对Add2感到疑惑,并询问google。如果您搜索“ vba sortfields add2” =>,那么这个问题是第一个Google匹配(其中之一)=>也许值得在此处提供更多信息。

10-07 12:11