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