为什么Excel.Range.Group的Periods参数采用数组?

Dre*_*pin 9 arrays grouping vba pivot-table excel-vba

最近我学习了如何使用VBA在Excel中自动创建数据透视表,并且该Excel.Range.Group()方法的实现让我感到奇怪.第四个参数Periods采用7个元素的布尔值数组来指示分组是按秒,分钟,小时,天,月,季度还是年.通常情况下,您可以通过使用一种Enum类型来完成这样的事情,该类型的成员可以Or一起表示已打开一个或多个选项 - 该MsgBox函数就是一个很好的例子.

例如,我原本期望使用更像这样......

MyPivotTable.DataRange.Cells(1).Group Periods:=vbGroupPeriods.Days Or _
    vbGroupPeriods.Months
Run Code Online (Sandbox Code Playgroud)

代替...

MyPivotTable.DataRange.Cells(1).Group Periods:=Array(False, False, False, _
    True, True, False, False)
Run Code Online (Sandbox Code Playgroud)

我环顾四周试图理解为什么用它来完成Array,但迄今为止空手而归.所以,我的问题是为什么这样做?我有没有看到一些限制?这是个人的个人选择吗?还是只是一个谜?不要试图抱怨,只是想了解.

Sid*_*out 2

Q1. 为什么要这样做?

也许是因为它给了你更多的灵活性?对我来说,输入True7 次更容易

Array(True, True, True, True, True, True, True)
Run Code Online (Sandbox Code Playgroud)

而不是说

vbGroupPeriods.Seconds Or _
vbGroupPeriods.Minutes Or _
vbGroupPeriods.Hours Or _
vbGroupPeriods.Days Or _
vbGroupPeriods.Months Or _
vbGroupPeriods.Quarters Or _
vbGroupPeriods.Years 
Run Code Online (Sandbox Code Playgroud)

而且数组中的顺序也不是很难记住......

秒-->分钟-->小时-->天-->月-->季度-->年

Q2。是否有一些我没有看到的限制?

否 没有这样的限制。

Q3。这是某人的个人选择吗?或者这只是一个谜?

不:)没有什么神秘的。这从来不是某人的个人选择。Microsoft 有一个专门负责 Excel 开发的团队,负责决定并灌输特定的特性/功能。