【发布时间】:2014-01-10 03:12:10
【问题描述】:
我希望运行以下任务:
1:使用动态图表创建模板工作表(即图表链接到大小经常变化的数据范围)
2:模板被多次复制到新的工作表中,每个工作表使用循环通过另一个工作表中的 PivotItems 的代码自动重命名。
3:然后将数据透视表中的日期复制到这些重复的工作表中,每个工作表中的动态表现在反映了复制到其中的数据。
尽管遇到以下问题,但我已经编写了大部分这些任务。动态图表是通过引用使用 OFFSET 和 COUNTA 函数定义的命名范围来创建的。每次模板重复时,我都会使用以下代码在新工作表中设置要定义的命名范围:
ActiveWorkbook.ActiveSheet.Names.Add Name:="Label", RefersToR1C1:= _
"=OFFSET(ActiveSheet!R46C3,1,0,COUNTA(ActiveSheet!R46C3:R69C3)-2)"
ActiveWorkbook.ActiveSheet.Names("Label").Comment = ""
ActiveWorkbook.ActiveSheet.Names.Add Name:="YTD2012", RefersToR1C1:= _
"=OFFSET(ActiveSheet!R46C5,1,0,COUNTA(ActiveSheet!R46C3:R69C3)-2)"
ActiveWorkbook.ActiveSheet.Names("YTD2012").Comment = ""
ActiveWorkbook.ActiveSheet.Names.Add Name:="YTD2013", RefersToR1C1:= _
"=OFFSET(ActiveSheet!R46C6,1,0,COUNTA(ActiveSheet!R46C3:R69C3)-2)"
ActiveWorkbook.ActiveSheet.Names("YTD2013").Comment = ""
[我使用的是聚集柱形图,因此需要两个与数据相关的命名范围,一个与数据标签相关的命名范围]
鉴于每次运行报表时工作表名称都会不同,因此需要 ActiveSheet 对象。但是,在为模板上的图表选择数据源时,我无法引用 ActiveSheet,因为这是一个 VBA 对象。考虑到它们的格式和位置,我宁愿保留在模板上预先格式化的图表(而不是每次通过 VBA 创建它们)。有没有办法在 Excel 中引用 ActiveSheet 或类似的东西,或者是在 VBA 中为每个工作表创建图表的唯一解决方案?
【问题讨论】: