2017-01-31 7 views
0

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

На оси 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 Chart Type Selection

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

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

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

ответ

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 
+0

'Chart.PlotBy = xlRows' Сделал трюк. Благодаря! –

Смежные вопросы