'Начало графика
Charts.Add
Charts(1).Activate
'Построение графика указанного вида
ActiveChart.ChartType = xlLineStacked 'xlColumnClustered
'шкала х
ActiveChart.SeriesCollection(1).XValues = Sheets(m_list). _
Range(Sheets(m_list).Cells(2, 2), Sheets(m_list).Cells(97, 2))
'Название графика
ActiveChart.SeriesCollection(1).Name = Sheets(m_list).Cells(2, 5)
'размещение графика на листе "Лист2" (m_list)
ActiveChart.Location Where:=xlLocationAsObject, Name:=m_list
'Разактивация графического окна
ActiveWindow.Visible = False
Добавка еще одной линии в существующий график
ActiveSheet.ChartObjects.Select
Selection.Activate
ActiveChart.SeriesCollection.NewSeries
'новый график(почему-то графики суммируются !!!!)
ActiveChart.SeriesCollection(2).Values = Sheets(m_list). _
Range(Sheets(m_list).Cells(2, 7), Sheets(m_list).Cells(97, 7))
Вроде бы простая, но для меня неразрешимая проблема с графиками.
Вторые сутки не могу понять в чем дело. При помощи макроса выстраиваю в Exelе график, после того, как он появился на рабочем листе, хочу добавить в этот же график еще одну линию. Линия добавляется, но значения новой линии суммируются с предыдущей линией. В чем дело! Помогите пожалуйста.
Код:
.SeriesCollection(1).Values = Worksheets(m_list).Range("B2:B97")
…
.SeriesCollection(2).Values = Worksheets(m_list).Range("G2:G97")
…
.SeriesCollection(2).Values = Worksheets(m_list).Range("G2:G97")
или сразу построить график на основании нужного диапазона ячеек
Код:
With Worksheets(m_list).ChartObjects _
.Add(Width:=250, Height:=150, Left:=0, Top:=0).Chart
.ChartType = xlLineStacked 'xlColumnClustered
.SetSourceData Source:=Worksheets(m_list).Range("B2:B97,G2:G97")
.SeriesCollection(1).Name = Worksheets(m_list).Range("E2")
End With
.Add(Width:=250, Height:=150, Left:=0, Top:=0).Chart
.ChartType = xlLineStacked 'xlColumnClustered
.SetSourceData Source:=Worksheets(m_list).Range("B2:B97,G2:G97")
.SeriesCollection(1).Name = Worksheets(m_list).Range("E2")
End With
Если же проблема заключается в том, что подписи находятся в столбце , а числа в столбце [G], то :
Код:
With Worksheets("Лист2").ChartObjects.Add(0, 0, 250, 150).Chart
.ChartType = xlLineStacked 'xlColumnClustered
With .SeriesCollection.NewSeries
.Name = Worksheets("Лист2").[E2]
.Values = Worksheets("Лист2").[G2:G97]
.XValues = Worksheets("Лист2").[B2:B97]
End With
End With
.ChartType = xlLineStacked 'xlColumnClustered
With .SeriesCollection.NewSeries
.Name = Worksheets("Лист2").[E2]
.Values = Worksheets("Лист2").[G2:G97]
.XValues = Worksheets("Лист2").[B2:B97]
End With
End With
Тоже самое, но с использованием кодового имени рабочего листа (которое, конечно же, может отличаться от нижеприведённого)
Код:
With Лист2.ChartObjects.Add(0, 0, 250, 150).Chart
.ChartType = xlLineStacked 'xlColumnClustered
With .SeriesCollection.NewSeries
.Name = Лист2.[E2]
.Values = Лист2.[G2:G97]
.XValues = Лист2.[B2:B97]
End With
End With
.ChartType = xlLineStacked 'xlColumnClustered
With .SeriesCollection.NewSeries
.Name = Лист2.[E2]
.Values = Лист2.[G2:G97]
.XValues = Лист2.[B2:B97]
End With
End With
Разобрался!!! Я неправильно указывал тип линии, надо было xlLine, а я делал xlLineStacked. PASHULKA спасибо за красивый код!