我已经编写了用于通过按钮单击生成图形的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
是包含列名称的变量。
如果我点击按钮,它将生成图表,如果第二次单击该按钮,它将再次生成图形。
我只想在第一张图中使用该图线我不想创建多个图形。
答案 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))