在VBA中创建具有多个系列的散点图

时间:2019-06-06 18:36:27

标签: excel vba

使用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 个答案:

答案 0 :(得分:2)

最初创建一个系列并为其分配值时,却忽略了为第二个系列创建一个新系列。顺便说一句,由于您使用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

希望这会有所帮助!