0

我在工作表上有多个数据透视图。如何按名称引用特定的现有数据透视图?我目前有以下有效的代码:

ThisWorkbook.Sheets("State").Shapes.AddChart2(XlChartType:=xlColumnStacked, Left:=140, Top:=0, Width:=800, Height:=550, NewLayout:=True).Select
ActiveChart.SetSourceData Source:=Range(ThisWorkbook.Sheets("State").PivotTables("StateTableName").TableRange2.Address)
ActiveChart.ChartTitle.Text = "State Resourcing"

首次创建图表时这很好,但如果我需要更改现有数据透视图的格式,我需要替换“ActiveChart”。有类似的东西:ThisWorkbook.Sheets("State").ChartObjects("MyPivotChart").ChartTitle

如何命名数据透视图,然后按名称引用该数据透视图?

4

2 回答 2

0

要按名称引用图表,您首先必须为其命名...尝试在创建过程中添加它:

你的代码:

ThisWorkbook.Sheets("State").Shapes.AddChart2(XlChartType:=xlColumnStacked, Left:=140, Top:=0, Width:=800, Height:=550, NewLayout:=True).Select
ActiveChart.SetSourceData Source:=Range(ThisWorkbook.Sheets("State").PivotTables("StateTableName").TableRange2.Address)
ActiveChart.ChartTitle.Text = "State Resourcing"

只需添加:

ActiveChart.Parent.Name = "MyPivotChart1" 'Chart Object keeps the name...

那么就可以通过这种方式获取对象:

Dim chO as ChartObject
Set chO = sh.ChartObjects("MyPivotChart1")
Debug.Print chO.Chart.ChartTitle.Text
于 2020-07-14T07:33:14.380 回答
0

我发现我的问题是尝试使用 ChartObjects 集合而不是 Chart 对象。

我试图使用它(失败了):

ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").ChartTitle.Text = "My Title"

正确的代码在哪里:

ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").Chart.ChartTitle.Text = "My Title"

在此工作之前,还需要将 .Name 属性设置为描述的 FaneDuru。我已将这部分排除在我的问题之外,因为设置名称对我来说是正确的,但对于将来搜索此答案的任何人来说,这都是重要的上下文。

于 2020-07-14T08:10:22.497 回答