2017-01-04 9 views
2

Я создаю диаграмму в excel через код vba. Я использую непрерывные данные, и диаграмма всплывает без проблем, однако есть дополнительная серия под названием «Серия 3», о которой я не просил и не нуждаюсь в том, чтобы избавиться (удалив ее или пропустив в первую очередь). Он не имеет данных, но должен быть удален из легенды. Вот мой код:Удалить серию из диаграммы с помощью VBA

Dim MyChtObj As ChartObject 
Dim Sht1 As Worksheet 
Dim ShtName As String 

Set Sht1 = Worksheets("Parameter Forecasts") 
ShtName = Sht1.Name 
Set MyChtObj = Sht1.ChartObjects.Add(100, 100, 500, 500) 

Set a = Sht1.Range("E37", Sht1.Range("E37").End(xlToRight)) 
Set b = Sht1.Range("E38", Sht1.Range("E38").End(xlToRight)) 
Set InputData = Union(a, b) 

With MyChtObj.Chart 
    .ChartType = xlLineMarkers 
    .SetSourceData InputData 
    .PlotBy = xlRows 
    .SeriesCollection.NewSeries.XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight)) 
End With 

Я уже пробовал:

MyChtObj.SeriesCollection(3).Delete

Но это не работает.

Спасибо заранее, Макс

+2

Попробуйте 'MyChtObj.Chart.SeriesCollection (3) .Delete' –

+0

Brilliant, что работает спасибо –

+0

LOL, вы радушны –

ответ

2

SeriesCollection является частью ChartObject.Chart объекта, а не ChartObject.

Therfore, замените строку:

MyChtObj.SeriesCollection(3).Delete 

С:

MyChtObj.Chart.SeriesCollection(3).Delete 
+1

Upvote для выделения разницы между 'ChartObject' и свойством' Chart' 'ChartObject'. –

0

Вашей строкой кода

.SeriesCollection.NewSeries.XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight)) 

добавляет третью серию через .NewSeries. Измените его на

.SeriesCollection(1).XValues = Sht1.Range("F36", Sht1.Range("F36").End(xlToRight)) 

Теперь ничего не нужно удалять.