【问题标题】:Excel 2010 VBA: Invalid procedure call when adding data field to pivot tableExcel 2010 VBA:将数据字段添加到数据透视表时过程调用无效
【发布时间】:2015-01-17 00:47:52
【问题描述】:

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

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

 pivotName.addDataField pivotName.PivotFields("sdID"), "SD ID number", xlCount 'works fine
 pivotName.addDataField pivotName.PivotFields(fieldName), fieldDescription, calcMethod 'produces Invalid procedure call error

由于我的想法不多了,我们将不胜感激!

非常感谢,

亚历山大

【问题讨论】:

  • 能否尝试分别输入这3个变量,以确定是否只有其中一个导致了问题?也许其中一个是错误的数据类型。
  • 您将变量声明为什么?猜测它会是 calcMethod 变量,我认为应该声明为 XLConsolidationFunction
  • 谢谢 Dan,总的来说,这是一个很好的建议,我自己已经太累了,无法想到...
  • @Gareth:非常感谢,其实是这个问题!我将calcMethod声明为字符串,这显然导致了问题!

标签: vba runtime-error excel-2010 pivot-table


【解决方案1】:

错误的原因是因为calcMethod 在代码前面被声明为string

.addDataField 方法接受以下参数:

.AddDataField(Field, Caption, Function)

参数Function 属于XLConsolidationFunction 枚举,因此应如下声明和分配:

Dim calcMethod As XlConsolidationFunction

calcMethod = xlCount

如上声明和分配后,您可以通过以下方式在您的方法中使用它,其中fieldNamefieldDescription 都是字符串:

pivotName.addDataField pivotName.PivotFields(fieldName), fieldDescription, calcMethod

【讨论】:

    【解决方案2】:

    正如您在 Gareth 的评论中所见,问题在于将 calcMethod(可选函数)声明为字符串,而不是 XLConsolidatedFunction。

    再次感谢您!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多