Scatter и Scatter lines не соответствуют полученным результатам

У меня есть следующий код

Dim sh As Worksheet
Set sh = ActiveWorkbook.Worksheets("Graphs")
Dim chrt As Chart
Set chrt = sh.Shapes.AddChart.Chart
Set s1 = chrt.SeriesCollection.NewSeries
Set s2 = chrt.SeriesCollection.NewSeries
Set s3 = chrt.SeriesCollection.NewSeries
Set s4 = chrt.SeriesCollection.NewSeries
Set s5 = chrt.SeriesCollection.NewSeries

With s1
    .ChartType = xlXYScatterLines
    'Change to what your series should be called
    .Name = "ConcreteCS"
    .XValues = "=Graphs!$E$48:$E$52"
    .Values = "=Graphs!$F$48:$F$52"
End With

With s2
    .ChartType = xlXYScatter
    .Name = "Asl_base_corner"
    .XValues = "=Graphs!$K$48:$K$49"
    .Values = "=Graphs!$L$48:$L$49"
End With

With s3
    .ChartType = xlXYScatter
    .Name = "Asl_base_mid"
    .XValues = "=Graphs!$K$52:$k$100"
    .Values = "=Graphs!$L$52:$L$100"
End With

With s4
    .ChartType = xlXYScatter
    .Name = "Asl_add_corner"
    .XValues = "=Graphs!$Q$48:$Q$49"
    .Values = "=Graphs!$R$48:$R$49"
End With

With s5
    .ChartType = xlXYScatter
    .Name = "Asl_add_mid"
    .XValues = "=Graphs!$Q$52:$Q$100"
    .Values = "=Graphs!$R$52:$R$100"
End With

With chrt
    .ChartArea.Left = 100
    .ChartArea.Top = 750
    .ChartArea.Height = 200
    .ChartArea.Width = 200
    .Axes(xlValue).MajorGridlines.Delete
    .HasAxis(xlCategory, xlPrimary) = False
    .HasAxis(xlCategory, xlSecondary) = False
    .HasAxis(xlValue, xlPrimary) = False
    .HasAxis(xlValue, xlSecondary) = False
    .Axes(xlCategory).MinimumScale = -b / 2
    .Axes(xlCategory).MaximumScale = b + b / 2
    .Axes(xlValue).MinimumScale = -h / 2
    .Axes(xlValue).MaximumScale = h + h / 2

    For ii = 1 To chrt.Legend.LegendEntries.Count Step 1
        .Legend.LegendEntries(ii).Delete
    Next

End With

Но получается разброс с линиями для s1, s2 и s3 и разброс для s4 и s5. Странно то, что я определил скаттер линиями только для s1. Также, когда я пытаюсь удалить легенды для всех серий, с индекса 4 до 5 выдает ошибку, хотя индекс существует (chrt.Legend.LegendEntries.Count = 5).

Помогите мне, пожалуйста!!! :)

Большое спасибо


person user3641311    schedule 11.04.2020    source источник
comment
For Each Srs In .SeriesCollection Srs.Delete Next Srs См. это   -  person Dy.Lee    schedule 12.04.2020


Ответы (1)


Я думаю, вы должны удалить Legend таким образом:

For ii = chrt.Legend.LegendEntries.Count To 1 Step -1
        .Legend.LegendEntries(ii).Delete
    Next

Но результатом является разброс с линиями для s1, s2 и s3 и разброс для s4 и >s5.

Вы уверены, что точки из серий s2, s3 не лежат на той же прямой, что и s1? и это только похоже на линию? Или точки большие и похоже связаны?

На моем компьютере ваш код делает это правильно. Это странно введите здесь описание изображения

person eaazel    schedule 11.04.2020
comment
Нет ошибки.. но сюжеты неправильные, и я все еще хочу удалить легенды серии.. Какие-нибудь советы? - person user3641311; 11.04.2020
comment
Код выше не удаляет легенду серии? - person eaazel; 11.04.2020