Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2010 VBA:将数据字段添加到透视表时过程调用无效_Vba_Runtime Error_Excel 2010_Pivot Table - Fatal编程技术网

Excel 2010 VBA:将数据字段添加到透视表时过程调用无效

Excel 2010 VBA:将数据字段添加到透视表时过程调用无效,vba,runtime-error,excel-2010,pivot-table,Vba,Runtime Error,Excel 2010,Pivot Table,我想通过将复杂性封装到函数和过程中来创建多个数据透视表(我已经使用VBA创建了数据透视,但是每个数据透视都有一个模块,这意味着大量重复代码…) 我设法创建过程和函数来创建透视、添加过滤器和行字段。但是当涉及到添加数据字段时,我得到了一个无效的过程调用;然而,奇怪的是,我只有在使用变量传递信息时才会出现错误:查看产生错误的行,第一行运行得非常好,而第二行无法运行(变量包含正确的值): 由于我的想法越来越少,任何帮助都将不胜感激 多谢各位 Alexander正如您在Gareth的评论中所看到的,问题

我想通过将复杂性封装到函数和过程中来创建多个数据透视表(我已经使用VBA创建了数据透视,但是每个数据透视都有一个模块,这意味着大量重复代码…)

我设法创建过程和函数来创建透视、添加过滤器和行字段。但是当涉及到添加数据字段时,我得到了一个无效的过程调用;然而,奇怪的是,我只有在使用变量传递信息时才会出现错误:查看产生错误的行,第一行运行得非常好,而第二行无法运行(变量包含正确的值):

由于我的想法越来越少,任何帮助都将不胜感激

多谢各位


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