按名称引用现有数据透视图
Reference an existing pivot chart by name
我在工作表上有多个数据透视图。如何按名称引用特定的现有数据透视图?
我目前有以下有效代码:
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
如何命名数据透视图,然后通过名称引用该数据透视图?
要按名称引用图表,您首先必须为其命名...尝试在创建过程中添加它:
您的代码:
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
我发现我的问题是尝试使用 ChartObjects 集合而不是 Chart 对象。
我试图使用这个(但失败了):
ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").ChartTitle.Text = "My Title"
正确的代码是:
ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").Chart.ChartTitle.Text = "My Title"
在此工作之前,还需要按照 FaneDuru 所述设置 .Name 属性。我将这部分排除在我的问题之外,因为设置名称对我来说工作正常,但对于将来搜索此答案的任何人来说,这都是重要的背景。
我在工作表上有多个数据透视图。如何按名称引用特定的现有数据透视图? 我目前有以下有效代码:
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
如何命名数据透视图,然后通过名称引用该数据透视图?
要按名称引用图表,您首先必须为其命名...尝试在创建过程中添加它:
您的代码:
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
我发现我的问题是尝试使用 ChartObjects 集合而不是 Chart 对象。
我试图使用这个(但失败了):
ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").ChartTitle.Text = "My Title"
正确的代码是:
ThisWorkbook.Sheets("MySheet").ChartObjects("MyPivotChart").Chart.ChartTitle.Text = "My Title"
在此工作之前,还需要按照 FaneDuru 所述设置 .Name 属性。我将这部分排除在我的问题之外,因为设置名称对我来说工作正常,但对于将来搜索此答案的任何人来说,这都是重要的背景。