Как изменить тип и цвета моей сводной диаграммы с помощью VBA? - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно иметь определенный тип диаграммы для моей сводной таблицы (комбинированной диаграммы), смешивающей сложенные столбцы и линии.Проблема в том, что моя сводная таблица или то, что я хочу показать, с фильтром (показывающим другую диаграмму для разных фильтров), и для этого я использую слайсер, поэтому, когда бы я ни очищал свои фильтры, формат, который я дал вначало диаграммы исчезает.

Так что для этого я хочу создать код в VBA, который дает желаемый формат для диаграммы каждый раз, когда я его фильтрую и очищаю фильтры.

Я записалмакрос для просмотра кода и попытки адаптировать его к тому, что я хочу, но он выдает ошибку.

Это записанный макрос:

Sub ChartType()
'I give the charts types
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveSheet.FullseriesCollection(1).ChartType = XlColumnStacked
ActiveSheet.FullseriesCollection(1).AxisGroup = 1
ActiveSheet.FullseriesCollection(2).ChartType = XlColumnStacked
ActiveSheet.FullseriesCollection(2).AxisGroup = 1
ActiveSheet.FullseriesCollection(3).ChartType = XlColumnStacked
ActiveSheet.FullseriesCollection(3).AxisGroup = 1
ActiveSheet.FullseriesCollection(4).ChartType = XlColumnStacked
ActiveSheet.FullseriesCollection(4).AxisGroup = 1
ActiveSheet.FullseriesCollection(5).ChartType = XlColumnStacked
ActiveSheet.FullseriesCollection(5).AxisGroup = 1
ActiveSheet.FullseriesCollection(6).ChartType = XlColumnStacked
ActiveSheet.FullseriesCollection(6).AxisGroup = 1

ActiveSheet.ChartObjets("Chart 1").Activate
ActiveChart.Legend.Select
'I give different colors to the charts

ActiveChart.Legend.LegendEntries(1).Select
With Selection.Format.Fill
   .Visible=msoTrue
   .ForeColor.RGB = RGB(0, 176, 240)
   .Transparency = 0
   .Solid
End With

ActiveChart.Legend.LegendEntries(2).Select
With Selection.Format.Fill
   .Visible=msoTrue
   .ForeColor.RGB = RGB(146, 208, 80)
   .Transparency = 0
   .Solid
End With

ActiveChart.Legend.LegendEntries(3).Select
With Selection.Format.Fill
   .Visible=msoTrue
   .ForeColor.ObjectThemeColor = msoThemeColorAccent 2
   .ForeColor.TintAndShade = 0
   .ForeColor.Brightness = 0
   .Transparency = 0
   .Solid
End With
'I make some lines invisible
ActiveSheet.FullSeriesCollection(4).Select
Selection.Format.Line.Visible = msoFalse
ActiveChart.FullSeriesCollection(5).Select
Selection.Format.Line.Visible = msoFalse

'I erase the legend of the invisible lines
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(4).Select
Selection.Delete
ActiveChart.Legend.LegendEntries(5).Select
Selection.Delete

End Sub

В данный момент я получаю ошибкув Selection.Format.Fill, а также всякий раз, когда я меняю фильтры и, например, легенда уже удалена, она стирает другую легенду, которую я не хочу стирать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...