Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 每张纸上都有一张新的图表_Excel_Vba - Fatal编程技术网

Excel 每张纸上都有一张新的图表

Excel 每张纸上都有一张新的图表,excel,vba,Excel,Vba,我正试图根据我已有的一些信息,在每张图纸上添加一个新的图表。然而,我最后只有一张纸,上面有最后一条信息的图表。我认为图表正在覆盖它们自己 这是密码 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

我正试图根据我已有的一些信息,在每张图纸上添加一个新的图表。然而,我最后只有一张纸,上面有最后一条信息的图表。我认为图表正在覆盖它们自己

这是密码

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

在您的示例中,在循环之外声明并设置图表对象。因此,在循环的每次迭代中,它都是相同的图表实例,并且它实际上被重写了,或者更准确地说,被更新了

尝试将它们移动到循环中,并将Charts对象声明为新对象。现在,每次递增,它都会生成一个新的图表实例。否则,一切看起来都很好

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