如何使用variables来设置数据透视表function参数与VBA?

我想使用variables来指定数据透视表的参数。 他们大多数工作正常,但其中2人不是。 “函数”参数“xli”和“ValueFilterQuant(pos)”没有提供任何值。 我试图写在引号和引号之间,但没有任何事情发生。 有什么方法来设置variables的函数参数? 这是代码片段:

For pos = 1 To UBound(ValueQuant) If ValueQuant(pos) = "Work" Then xli = "xlSum" Label = "Sum of " Else xli = "xlCount" Label = "Count of " End If ActiveSheet.PivotTables("PivotTable1").CubeFields.GetMeasure "[database].[" & ValueQuant(pos) & "]" _ , xli, "" & Label & "" & ValueQuant(pos) & "" ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ " PivotTable1").CubeFields("[Measures].[" & Label & "" & ValueQuant(pos) & "]"), "" & Label & "" & ValueQuant(pos) & "" With ActiveSheet.PivotTables("PivotTable1").PivotFields( _ "[Measures].[" & Label & "" & ValueQuant(pos) & "]") .Caption = "" & ValueFilterQuantaf(pos) & "" & ValueQuant(pos) & "" .Function = ValueFilterQuant(pos) End With Next 

代码不完整。 我不知道ValueFilterQuant(pos)来自哪里。

我怀疑像xli =“xlSum”它返回一个stringvariables,但事情是,这些参数不应该是string。 它们是从XlConsolidationFunction枚举派生的数字。

所以像这样:

 If ValueQuant(pos) = "Work" Then xli = XlConsolidationFunction.xlSum '-4157 Label = "Sum of " Else xli = XlConsolidationFunction.xlCount '-4112 Label = "Count of " End If 

ValueFilterQuant(pos)需要同样的事情发生。

请注意,在运行时通过一个string派生一个dynamic枚举是更多的工作。 我猜你正在读取工作表或类似过程中的string值。

你可以事先在字典中设置它们,并用这种方法挑出数字。 值的列表在这里: https : //msdn.microsoft.com/en-us/library/office/ff837374.aspx