Excel 2010 VBA:将数据字段添加到透视表时过程调用无效
我想通过将复杂性封装到函数和过程中来创建多个数据透视表(我已经使用VBA创建了数据透视,但是每个数据透视都有一个模块,这意味着大量重复代码…) 我设法创建过程和函数来创建透视、添加过滤器和行字段。但是当涉及到添加数据字段时,我得到了一个无效的过程调用;然而,奇怪的是,我只有在使用变量传递信息时才会出现错误:查看产生错误的行,第一行运行得非常好,而第二行无法运行(变量包含正确的值): 由于我的想法越来越少,任何帮助都将不胜感激 多谢各位Excel 2010 VBA:将数据字段添加到透视表时过程调用无效,vba,runtime-error,excel-2010,pivot-table,Vba,Runtime Error,Excel 2010,Pivot Table,我想通过将复杂性封装到函数和过程中来创建多个数据透视表(我已经使用VBA创建了数据透视,但是每个数据透视都有一个模块,这意味着大量重复代码…) 我设法创建过程和函数来创建透视、添加过滤器和行字段。但是当涉及到添加数据字段时,我得到了一个无效的过程调用;然而,奇怪的是,我只有在使用变量传递信息时才会出现错误:查看产生错误的行,第一行运行得非常好,而第二行无法运行(变量包含正确的值): 由于我的想法越来越少,任何帮助都将不胜感激 多谢各位 Alexander正如您在Gareth的评论中所看到的,问题
Alexander正如您在Gareth的评论中所看到的,问题是将
calcMethod
(可选函数)声明为字符串,而不是XLConsolidatedFunction
再次感谢您 错误的原因是
calcMethod
在代码前面被声明为字符串
.addDataField
方法接受以下参数:
.AddDataField(Field, Caption, Function)
参数Function
属于XLConsolidationFunction
enum,因此应按如下方式声明和分配:
Dim calcMethod As XlConsolidationFunction
calcMethod = xlCount
按上述方式声明和分配后,您可以在方法中以以下方式使用它,fieldName
和fieldDescription
都是字符串:
pivotName.addDataField pivotName.PivotFields(fieldName), fieldDescription, calcMethod
您是否可以尝试分别输入这3个变量,以确定是否只有其中一个会导致问题?可能其中一个数据类型错误。您将变量声明为什么?我猜应该是
calcMethod
变量,我认为应该声明为XLConsolidationFunction
谢谢Dan,总的来说这是一个很好的提示,我自己已经太累了,想不起来了…@Gareth:非常感谢,事实上这就是问题所在!我将calcMethod
声明为字符串,这显然导致了问题!
pivotName.addDataField pivotName.PivotFields(fieldName), fieldDescription, calcMethod