【问题标题】:Multiple Pivot Charts SetSourceData Error多个数据透视图 SetSourceData 错误
【发布时间】:2009-06-01 02:56:23
【问题描述】:

我在 Excel 2002 的不同工作表上有多个数据透视图,每个图表都有自己的数据透视表。

当我尝试使用以下代码使用 VBA 生成这些图表时:

Set cht = Charts.Add(After:=Worksheets("Setup"))
With cht
    ' we use named ranges here
    .SetSourceData Source:=range(tblName)
    .Name = chtName

....

其中 tblName 是前几行刚刚创建的命名范围,如果只有一个表格和图表生成,代码运行良好,但给我一个运行时错误 1004:“数据透视图报表的源数据无法更改。 .." 如果我​​尝试一个接一个地生成数据透视表和图表集。

要插入 -> 名称 -> 定义,创建的命名范围列表似乎是正确的。

为具有动态范围的数据透视图设置源数据的正确方法是什么?

【问题讨论】:

  • 您可以上传excel文件(具有相同输入/输出和异常的虚拟文件)吗?

标签: excel vba


【解决方案1】:

我认为您可能一次尝试做太多事情。

如果数据源要改变,我不会使用数据透视图。

使用数据透视表,在运行时创建图表(如您的示例)。构建数据透视表结果的图表。

【讨论】:

  • 使用数据透视图的全部意义在于我可以创建数据透视表。图表创建的顺序如下:将数据拉入数据透视表,将命名范围添加到该数据透视范围,从该数据透视表创建图表,但通过创建的命名范围引用它
【解决方案2】:

这段代码假设每张工作表只有一个数据透视表,并且数据透视表从单元格 A1 开始:

Sheets(wsName).Select
Range("A1").Select
Set cht = Charts.Add(after:=Worksheets(Worksheets.Count))
With cht
    .SetSourceData Sheets(wsName).Range("A1")
    .Name = chtName

...

还将“Worksheets.Count”更改为特定的工作表名称似乎也会触发该错误。

【讨论】:

  • 不确定为什么 SetSourceData 方法运行两次,但语法略有不同。 Source 是第一个参数,也是唯一需要的参数,因此两行应该有相同的结果
  • 好电话。这是一个错字,后来在原始代码中更正了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
相关资源
最近更新 更多