每张纸都有一个新的图表

我试图根据我已有的一些信息添加一个新的图表。 不过,最后一张信息最终只有一张图表。 我认为这些图表正在覆盖自己。

这是代码

Dim chart1 As chart Set chart1 = Charts.Add For i = 0 To 9 chart1.Add.SetSourceData Source:=Destino.Range("A24").Offset(0, 3 * i).CurrentRegion, PlotBy:=xlRows chart1.ChartType = xlBarClustered ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="gráfico" & i + 1 With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Cuenta por categoría de" & origen.[c4].Offset(i, 0) .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Categoría" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Frecuencia" End With ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count) Next 

在你的例子中,你在循环之外声明和设置Chart对象。 所以它在循环的每次迭代中都是Chart的同一个实例,并且它基本上被覆盖,或者更准确地说是更新的。

尝试在循环内移动它们,并将Charts对象声明为New。 现在每增加一次,它就会生成一个Chart的NEW实例。 否则,一切看起来不错。

 For i = 0 To 9 Dim chart1 As New Chart Set chart1 = Charts.Add chart1.Add.SetSourceData Source:=Destino.Range("A24").Offset(0, 3 * i).CurrentRegion, PlotBy:=xlRows chart1.ChartType = xlBarClustered ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="gráfico" & i + 1 With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = "Cuenta por categoría de" & origen.[c4].Offset(i, 0) .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Categoría" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Frecuencia" End With ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count) Next