Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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_Excel 2013_Excel Charts_Vba - Fatal编程技术网

Excel宏图表创建仅在单步执行调试器时正确执行

Excel宏图表创建仅在单步执行调试器时正确执行,excel,excel-2013,excel-charts,vba,Excel,Excel 2013,Excel Charts,Vba,所以我的Excel宏有一个导致压力的问题。当我运行代码以根据某些表数据创建图表时,它会中断,说创建第六个系列时出错,但当我在调试器中逐步执行代码时,它运行得非常好!我下面的方法有什么问题吗?还是另一个我不知道的问题 以下是图表代码: Sub staffing_Chart() Dim staffChart Set staffChart = ActiveWorkbook.Worksheets("2015 Chart").ChartObjects.Add(Lef

所以我的Excel宏有一个导致压力的问题。当我运行代码以根据某些表数据创建图表时,它会中断,说创建第六个系列时出错,但当我在调试器中逐步执行代码时,它运行得非常好!我下面的方法有什么问题吗?还是另一个我不知道的问题

以下是图表代码:

Sub staffing_Chart()
    Dim staffChart
    Set staffChart = ActiveWorkbook.Worksheets("2015   Chart").ChartObjects.Add(Left:=175, Width:=500, Top:=350, Height:=325)
    With staffChart.Chart
        .ChartType = xlAreaStacked
        .HasTitle = True
        .ChartTitle.Text = "All Geo Int Staffing"
        .SetSourceData Source:=Range("B5:G30")
        .FullSeriesCollection(1).Name = "='2015 Chart'!$B$4"
        .FullSeriesCollection(1).XValues = "='2015 Chart'!$A$5:$A$30"
        .FullSeriesCollection(2).Name = "='2015 Chart'!$C$4"
        .FullSeriesCollection(3).Name = "='2015 Chart'!$D$4"
        .FullSeriesCollection(4).Name = "='2015 Chart'!$E$4"
        .FullSeriesCollection(5).Name = "='2015 Chart'!$F$4"
        .FullSeriesCollection(6).Name = "='2015 Chart'!$G$4"
        .Axes(xlCategory).CategoryType = xlCategoryScale
        .Axes(xlCategory).CrossesAt = 1
        .Axes(xlCategory).Crosses = xlAutomatic
        .Axes(xlCategory).TickMarkSpacing = 5
        .Axes(xlCategory).TickLabelSpacing = 5
        .Axes(xlCategory).TickLabels.NumberFormat = "m/d/yyyy"
        .Axes(xlCategory).TickLabels.NumberFormat = "[$-409]mmm-yy;@"
        .Axes(xlCategory).TickLabels.NumberFormat = "[$-409]mmm;@"
    End With
End Sub
这是表格:

编辑

为了回答你的建议,Scott使用你的代码,我在正常运行时得到了这个图表

但是,如果我在调试器中逐步检查您的代码,它确实可以正常工作,因此这是优化方面的一个好建议


尽管如此,我的问题仍然存在。

为什么不在构建此图表时仅依靠Excel的内置智能,并将源范围设置为包括列标签和x轴类别标签

以下代码对我来说完美无瑕,无论是完全执行还是逐步执行:

Sub staffing_Chart()

    Dim staffChart
    Set staffChart = ActiveWorkbook.Worksheets("2015 Chart").ChartObjects.Add(Left:=175, Width:=500, Top:=350, Height:=325)

    With staffChart.Chart

        .ChartType = xlAreaStacked
        .HasTitle = True
        .ChartTitle.Text = "All Geo Int Staffing"
        .SetSourceData Source:=Range("A4:G30")

        With .Axes(xlCategory)
            .CategoryType = xlCategoryScale
            .CrossesAt = 1
            .Crosses = xlAutomatic
            .TickMarkSpacing = 5
            .TickLabelSpacing = 5
            .TickLabels.NumberFormat = "[$-409]mmm;@"
        End With

    End With

End Sub

为什么不单独设置
.SetSourceData:=Range(“A4:G30”)
.FullSeriesCollection
?如果您按照我的建议设置源范围,它将按照它应该的方式进行完美设置。尝试了您的建议,但仍然收到错误,我将输出放在我的帖子的编辑中。当您单击图表并查看数据源时会发生什么情况。。。真奇怪!?Ahhh代码的问题是这一行:.SetSourceData:=Range(“A4:'2015 Chart'!G30”)它使用的是不同的工作表,因为在运行图表创建之前的代码时,它会在2015 Chart以外的工作表上结束#facepalm代码现在可以工作了!谢谢通过添加“2015年图表”修复了此问题!在这个范围内,也可以在那里设置一个活动的工作表调用。啊-我应该知道这一点。最好的书写方式是:
工作表(“2015年图表”)。范围(“A4:G30”)
。您肯定总是希望在VBA中限定所有特定工作簿/工作表/范围。否则,您可能会遇到意想不到的错误,需要花费很长时间才能发现:)(就像您刚才所做的那样!)