我想使用变量来指定数据透视表的参数。他们中的大多数都正常工作,但其中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
答案 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