Кластерная диаграмма столбцов Excel 2013 в VBA

Я использую EXCEL VBA для создания новой диаграммы из двух рядов данных. Версия Excel 2013 года.

На оси X у меня есть годы, а на оси Y у меня есть некоторые конкретные значения для каждого года.

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

Я создаю диаграмму с:

ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Union(Sheets(SheetName).Range(Cells(1, 11), Cells(1, LastColumnNumber)), Sheets(SheetName).Range(Cells(4, 11), Cells(4, LastColumnNumber)))

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

LastColumnNumber используется для подсчета столбца за последний год и его соответствующего значения.

Я пытался:

ActiveChart.ChartType = xlColumnClustered

Также я попытался записать новый макрос при смене стилей, и нет параметра, выбирающего один из этих 3.

Выбор типа диаграммы Excel 2013

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

PS Мне на самом деле нужен тот, который выбран на экране печати.

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

1 ответ

Решение

Насколько я понимаю, вам нужно это:

Chart.PlotBy = xlColumns

Или это:

Chart.PlotBy = xlRows

Смотрите ниже для контекста:

Sub InsertBar(myRange As Range)

    Dim rngChart As Range
    Dim myChart As Chart

    Sheets(Operator.Value).Range("$A$10:$C$10").Select
    Set myChart = ActiveSheet.Shapes.AddChart(xlColumnClustered, 500, 10, , 175).Chart

    With myChart
        .PlotBy = xlColumns
        .ChartArea.Format.TextFrame2.TextRange.Font.Size = 8
        .HasTitle = True
        .ChartTitle.Text = "Title"
        .SeriesCollection(1).Name = Range("B" & StartRow - 1).Value
        .SeriesCollection(2).Name = Range("C" & StartRow - 1).Value
    End With
End Sub
Другие вопросы по тегам