用dymanic数据源

时间:2017-11-08 11:10:25

标签: excel vba excel-vba dynamic charts

作为VBA中sub()的最后一步,我试图编写一个代码来创建一个饼图而不是结果数据,但是我无法将数据源定义为列的位置数据和行数各不相同。 这是当前的代码。

'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表示数据源长了多少行(不包括标题)。

当我尝试运行sub时,我得到一个"对象_global的方法单元格失败"错误,从在线搜索似乎这是触发因为数据源位置不够具体,但我不确定它是如何更具体,因为定义了工作表和单元格。我也试过添加工作簿,但它没有帮助。

1 个答案:

答案 0 :(得分: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