如何使用vba自动生成图表中的系列

时间:2012-10-10 11:29:23

标签: excel-vba vba excel

我已经编写了用于通过按钮单击生成图形的vba代码。它工作正常,但问题是我想添加更多系列。

我的代码是

Dim ch As Chart
Set ch = ActiveWorkbook.Charts.Add
Set ch = ch.Location(Where:=xlLocationAsObject, name:=assume)
With ch
.ChartType = xlXYScatterLines
 With .Parent
  .Top = Columns(b).Offset(0, 4).Top
  .Left = Columns(b).Offset(0, 4).Left
  .name = "ch"
 End With
End With
Dim sh As Series
 Set sh = ch.SeriesCollection(1)
  With sh
 .Values = Columns(b).Offset(0, 0)
 .XValues = Columns(b).Offset(0, -2)
 End With

此处assume是保存工作表名称的变量..在columns(b)中,b是包含列名称的变量。

如果我点击按钮,它将生成图表,如果第二次单击该按钮,它将再次生成图形。

我只想在第一张图中使用该图线我不想创建多个图形。

1 个答案:

答案 0 :(得分:2)

您需要将其分解为两个单独的代码,1用于创建原始图表,另一个用于添加系列代码。

'===== First Chart Run ============

Dim ch As Chart
Set ch = ActiveWorkbook.Charts.Add
Set ch = ch.Location(Where:=xlLocationAsObject, Name:=assume)

With ch

    .ChartType = xlXYScatterLines

    With .Parent
        .Top = Columns(b).Offset(0, 4).Top
        .Left = Columns(b).Offset(0, 4).Left
        .Name = "ch"
    End With

End With

Dim sh As Series
Set sh = ch.SeriesCollection(1)

With sh
    .Values = Columns(b).Offset(0, 0)
    .XValues = Columns(b).Offset(0, -2)
End With

'===== Add More Series ============

Set ch = ActiveWorkbook.Charts("ch")
ch.SeriesCollection.Add _ 
    source:=assume.Range(Columns(b).Offset(0,0),Columns(b).Offset(0,-2))