Создание точечного графика с несколькими сериями в VBA - PullRequest
0 голосов
/ 06 июня 2019

Создание точечного графика с использованием VBA, и у меня есть несколько серий XY, которые я хочу использовать.

Я использую seriescollect, и программа работает только с одним набором данных, и я пытаюсь использовать больше, чем on, и я получаю сообщение об ошибке.

Private Sub generate_scatterplot()

Dim ochartObj As ChartObject
Dim oChart As Chart

Set ochartObj = ActiveSheet.ChartObjects.Add(Top:=10, Left:=325, Width:=600, Height:=300)
Set oChart = ochartObj.Chart

With oChart
    oChart.ChartType = xlXYScatterSmooth
    oChart.SeriesCollection.NewSeries
    oChart.SeriesCollection(1).XValues = Range("O200:S200")
    oChart.SeriesCollection(1).Values = Range("O201:S201")
    oChart.SeriesCollection(2).XValues = Range("O202:S202")
    oChart.SeriesCollection(2).Values = Range("O203:S203")
End With
End Sub

С одним набором данных выводитсято, что я хочу, просто нужно изменить некоторые заголовки, но когда я пытаюсь получить более одной серии, я получаю сообщение об ошибке «

» «Ошибка времени выполнения 1004: определяется приложением или объект-определенная ошибка "

1 Ответ

2 голосов
/ 06 июня 2019

В то время как вы изначально создали серию и присвоили ей значения, вы забыли создать новую для своей второй серии. Кстати, поскольку вы используете оператор With/End With для обращения к диаграмме, вы можете начать свои строки с помощью оператора точки (.). Попробуйте следующее ...

Private Sub generate_scatterplot()

    Dim oChartObj As ChartObject
    Dim oChart As Chart
    Dim rSourceData As Range
    Dim i As Long

    Set oChartObj = ActiveSheet.ChartObjects.Add(Top:=10, Left:=325, Width:=600, Height:=300)
    Set oChart = oChartObj.Chart

    Set rSourceData = Range("O200:S249")

    With oChart
        .ChartType = xlXYScatterSmooth
        For i = 1 To rSourceData.Rows.Count Step 2
            With .SeriesCollection.NewSeries
                .XValues = rSourceData.Rows(i)
                .Values = rSourceData.Rows(i + 1)
            End With
        Next i
    End With

End Sub

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...