Редактирование и назначение недавно добавленного графика в Excel VBA

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

Вот мой код. Может кто-нибудь, пожалуйста, помогите мне:

Sub Charts() ActiveSheet.Shapes.AddCha rt.Select ActiveChart.ChartType = xlColumnStacked100 ActiveChart.SetSourceData Source:=Sheets("Calculations").Range("A1:D11") ActiveChart.Name = "MyChart" ActiveChart.SeriesCollection(1).XValues = "=Data!$N$5:$N$14" ActiveChart.SeriesCollection(3).Select ActiveChart.Legend.Select ActiveChart.Legend.LegendEntries(1).Select With Selection.Format.Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 .Solid End With With Selection.Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(0, 0, 0) .Transparency = 0 End With ActiveChart.Legend.LegendEntries(2).Select With Selection.Format.Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 192, 0) .Transparency = 0 .Solid End With With Selection.Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(0, 0, 0) .Transparency = 0 End With ActiveChart.Legend.LegendEntries(3).Select With Selection.Format.Fill .Visible = msoTrue .ForeColor.RGB = RGB(0, 176, 80) .Transparency = 0 .Solid End With With Selection.Format.Line .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorText1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 .Transparency = 0 End With ActiveChart.SeriesCollection(3).Select ActiveChart.Axes(xlValue).MajorGridlines.Select Selection.Delete End Sub 

благодаря

Таким образом, свойство .Name может быть установлено только для таблиц диаграмм. Для встроенных диаграмм (объектов диаграммы) это только чтение, поэтому вы не можете присвоить ему значение. Вы можете присвоить значение имени своего контейнера:

 ActiveChart.Parent.Name = "MyChart" 

Вместо того, чтобы пытаться форматировать записи легенды, отформатируйте серию. Я также переписал ваши инструкции., Нет необходимости выбирать каждый элемент перед их форматированием:

 Sub ChartThingy() ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlColumnStacked100 ActiveChart.SetSourceData Source:=Sheets("Calculations").Range("A1:D11") ActiveChart.Parent.Name = "MyChart" ActiveChart.SeriesCollection(1).XValues = "=Data!$N$5:$N$14" With ActiveChart.SeriesCollection(3).Format With .Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Transparency = 0 .Solid End With With .Line .Visible = msoTrue .ForeColor.RGB = RGB(0, 0, 0) .Transparency = 0 End With End With With ActiveChart.SeriesCollection(2).Format With .Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 192, 0) .Transparency = 0 .Solid End With With .Line .Visible = msoTrue .ForeColor.RGB = RGB(0, 0, 0) .Transparency = 0 End With End With With ActiveChart.SeriesCollection(1).Format With .Fill .Visible = msoTrue .ForeColor.RGB = RGB(0, 176, 80) .Transparency = 0 .Solid End With With .Line .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorText1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 .Transparency = 0 End With End With ActiveChart.Axes(xlValue).MajorGridlines.Select Selection.Delete End Sub 
  • Excel VBA: какова преобразующая формула, указанная парой {X; Y} для события Chart.MouseDown для пары {Category; Value}?
  • Форматировать метки данных для каждой серии в диаграмме
  • Как показать значения в метках данных таблицы Excel Парето, когда диаграмма основана на процентах
  • Линия диаграммы, составленная на 100%
  • Ошибка VBA: получение ошибки во время выполнения '91': переменная объекта или с заблокированной переменной блока При попытке изменить данные диаграммы
  • Изменение оси X объекта ChartObject в VBA
  • Цвет линии / цвета маркерной линии Excel VBA
  • VBA Excel Chart SeriesCollection
  • Цитирование через рабочий лист для создания графика в VBA
  • Код VBA для отображения первой и последней точек на графике
  • Как определить порядок диаграмм при экспорте из Excel в PowerPoint?
  • Давайте будем гением компьютера.