【问题标题】:VBA code to create Piechart with dymanic datasource使用动态数据源创建饼图的 VBA 代码
【发布时间】:2018-04-21 01:13:12
【问题描述】:

作为 VBA 中 sub() 的最后一步,我尝试编写代码以在 subs 结果数据上创建饼图,但是我无法将数据源定义为数据的列位置,并且行数不同。 这是当前代码。

'Create Pie chart

Charts.Add
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(Cells(2, X + 2), Cells(1 + Y, X + 2)), PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Market Simulator"
ActiveChart.HasTitle = False

X 和 Y 在代码的前面填充,X 表示图表源数据向右移动了多少列,Y 表示数据源有多少行(不包括标题)。

当我尝试运行子程序时,我收到“对象_global 的方法单元失败”错误,从在线搜索看来这是被触发的,因为数据源位置不够具体,但我不确定它是如何发生的可以更具体,因为工作表和单元格都已定义。我也尝试添加工作簿,但没有帮助。

【问题讨论】:

    标签: vba excel dynamic charts


    【解决方案1】:

    可能的常见错误是您没有使用工作表完全限定所有范围/单元格引用。当您添加图表工作表时,Sheet1 不再处于活动状态,然后代码将尝试访问图表工作表上的单元格,而这永远不会愉快地结束。请注意下面两个单元格前面的点。

    Charts.Add
    ActiveChart.ChartType = xlPie
    With Sheets("Sheet1")
        ActiveChart.SetSourceData Source:=.Range(.Cells(2, x + 2), .Cells(1 + y, x + 2)), PlotBy:= _
    xlColumns
    End With
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Market Simulator"
    ActiveChart.HasTitle = False
    

    【讨论】:

    • 您好 SJR,感谢您的回复,该代码适用于您的添加,并感谢您解释它失败的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多