在图上绘制多条线

我正在试图绘制一个图表,其中有许多系列绘制在同一个轴上。 所以我们有:

Sheet1.ChartObjects(1).Activate ActiveChart.ChartType = xlLineMarkers Set ChartRange1 = Sheets("Series_2").Range("$E$8:$E20$") ChartRangeAddr1 = ChartRange1.Address(External:=True) Set ChartRange2 = Sheets("Series_3").Range("$E$8:$E$20") ChartRangeAddr2 = ChartRange2.Address(External:=True) (we could have many more here) ActiveChart.SetSourceData Source:=Range(ChartRangeAddr1, ChartRangeAddr2) ActiveChart.SeriesCollection(1).XValues = "=Series_1!$D$8:$D20" ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Dates" ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "USD" ActiveChart.Axes(xlCategory).HasMajorGridlines = True 

注意:Series_1和Series_2是来自不同工作表的数据。 由于某些原因,这个代码只能在图上产生一个系列。 请,任何人都可以纠正我没有看到的错误,或者将我的指南针指向一个解决在VBA中绘制多于一行的图表的一般问题的解决scheme。 谢谢

看看你是否可以添加一行:

 ActiveChart.SeriesCollection(1).YValues = "=Series_2!$E$8:$E20$" ActiveChart.SeriesCollection(2).YValues = "=Series_3!$E$8:$E20$" 

我发现当你录制一个macros时,它有时会跳过重要的步骤。

SetSourceData只能处理一张纸上的数据。 你可以这样做(跳过ChartRange1Address等):

 ActiveChart.SetSourceData Source:=ChartRange1 ActiveChart.SeriesCollection(1).XValues = "=Series_1!$D$8:$D20" With ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Values = ChartRange2 End With