全新的VBA。需要宏的帮助才能将系列添加到图表中

时间:2014-07-28 15:49:53

标签: excel vba excel-vba

我是VBA的新手所以我正在努力做出我觉得应该是一个简单的宏。我已经在这里研究了很长时间试图解决它,但我无法理解什么是错的。我在excel中的行1到200中有200个系列。每个系列都有两个x值(在B和C中)和两个y值在(D和E)中,我试图制作一个XYScatterLine图。我想制作一个宏,将所有这200个系列添加到图表上。我试图在下面写一个宏,但它不起作用,我感到困惑。任何帮助将不胜感激!!

Sub graph()
    Dim a
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterLines
    For a = 1 To 200
        With ActiveChart
            With .SeriesCollection.NewSeries
                .XValues = Sheets(Sheet1).Range("B" & a & ":C" & a)
                .Values = Sheets(Sheet1).Range("D" & a & ":E" & a)
                .Name = "name"
            End With
        End With
    Next
End Sub

我觉得我的错误始于.Xvalues行,因为图表生成但没有绘制系列。我非常感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:1)

这有帮助吗?

ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=[Add Series Name]"
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$B$1:$B$200"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!$D$1:$D$200"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "=[Add Series Name]"
ActiveChart.SeriesCollection(2).XValues = "=Sheet1!$C$1:$C$200"
ActiveChart.SeriesCollection(2).Values = "=Sheet1!$E$1:$E$200"

如果它们与您的工作表完全匹配,您可能需要修改我使用的列引用。

我还要注意,此代码非常静态,如果您的数据集增加到超过200行,则不会发生变化。

答案 1 :(得分:1)

Sub graph()

Dim cht As Chart
Dim a, sht

    Set sht = Sheets("Sheet1")
    Set cht = ActiveSheet.Shapes.AddChart.Chart
    cht.ChartType = xlXYScatterLines

    For a = 1 To 19
        With cht.SeriesCollection.NewSeries
            .Name = "name"
            .Values = sht.Range("D" & a & ":E" & a)
            .XValues = sht.Range("B" & a & ":C" & a)
        End With
    Next
End Sub

答案 2 :(得分:0)

将工作表名称放在引号中。也就是说,改变这个:

Course course = new Course( … );
courses.add( course );

到此:

            .XValues = Sheets(Sheet1).Range("B" & a & ":C" & a)
            .Values = Sheets(Sheet1).Range("D" & a & ":E" & a)