-1

我已经编写了通过按钮单击生成图形的 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是保存工作表名称的变量.. 和 incolumns(b)b保存列名的变量。

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

我只想要第一个图中的图表线我不想创建多个图表。

4

1 回答 1

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))
于 2012-10-10T12:54:23.167 回答