如何使用变量来设置数据透视表功能参数与VBA?

时间:2017-03-21 22:11:47

标签: excel vba excel-vba pivot-table

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

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

1 个答案:

答案 0 :(得分:1)

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

我怀疑像xli =" xlSum"它返回一个字符串变量,但问题是这些参数不应该是字符串。它们是从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)也需要发生同样的事情。

请注意,通过字符串在运行时派生动态枚举更有效。我猜你正在读取工作表或类似过程中的字符串值。

您可以事先在词典中设置它们,然后选择那些数字。 值列表位于:https://msdn.microsoft.com/en-us/library/office/ff837374.aspx