Ссылка на существующую сводную диаграмму по имени - PullRequest
0 голосов
/ 14 июля 2020

У меня есть несколько сводных диаграмм на листе. Как я могу сослаться на конкретную c существующую сводную диаграмму по имени? В настоящее время у меня работает следующий код:

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

Как я могу назвать сводную диаграмму, а затем ссылаться на эту сводную диаграмму по имени?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Я обнаружил, что моя проблема заключалась в попытке использовать коллекцию ChartObjects вместо объекта Chart.

Я пытался использовать это (что не удалось):

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

Где правильный код:

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

Установка свойства .Name в соответствии с описанием FaneDuru также требуется, прежде чем это сработает. Я исключил эту часть из своего вопроса, так как установка имени работала для меня правильно, но это важный контекст для тех, кто будет искать этот ответ в будущем.

0 голосов
/ 14 июля 2020

Чтобы ссылаться на диаграмму по имени, вы сначала должны дать ей имя ... Попробуйте добавить его во время создания:

Ваш код:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...