我试图动态添加多个系列到折线图。事前我不知道有多少系列,所以它需要动态。我提出的但不起作用的是:Excel VBA脚本动态添加系列到图表
工作表ActiveSheet(或Sheets(“Data”))从C14开始具有行,直到包含从E14:Eend到R14的XValues和Columns的Cend: Rend其中“end”标记由列C确定的最后一行数据。系列名称存储在第9行。XValues对于所有系列都是相同的。
我的大问题是,我无法找到一种方法来将所有数据列作为系列动态添加到我的图表以及相应的名称。我不是VBA的专家,所以请客气。我已经阅读了各种资料,并尝试了很多脚本,似乎没有任何工作。对象目录有点帮助,但是我的问题依然存在。
Sub MakeChart()
Dim LastColumn As Long
Dim LastRow As Long
Dim i As Integer
Dim u As Integer
Dim NameRng As String
Dim CountsRng As Range
Dim xRng As Range
LastColumn = ActiveSheet.Cells(8, Columns.Count).End(xlToLeft).Column
ColumnCount = LastColumn - 4
LastRow = ActiveSheet.Range("C" & ActiveSheet.Rows.Count).End(xlUp).Row
' Debug.Print ("Last Column: " & LastColumn & " Count: " & ColumnCount & " LastRow: " & LastRow)
Charts.Add
With ActiveChart
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = "Test"
End With
For i = 1 To ColumnCount
u = i + 4
NameRng = Sheets("Data").Range("R9:C" & u).Value
Set xRng = Sheets("Data").Range("R14:C3", "R" & LastRow & ":C3")
Set CountsRng = Sheets("Data").Range("R14:C" & u, "R" & LastRow & ":C" & u)
' Debug.Print ("CountsRng: R14:C" & u & ", R" & LastRow & ":C" & u & " NameRng: " & NameRng & " xRng: R14:C3 , R" & LastRow & ":C3")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).XValues = xRng
ActiveChart.SeriesCollection(i).Values = CountsRng
ActiveChart.SeriesCollection(i).Name = NameRng
Next i
End Sub
至于它在哪里工作,从哪一点起不起作用? –
该系列可能是从系列0开始的?因此SeriesCollection(i-1)? 如果我没有弄错,你也可以使用'With ActiveChart.SeriesCollection.NewSeries',并在下面的行中设置.XValues等。然后用'End With'关闭 –