使用动态数据源创建Piechart的VBA代码

使用动态数据源创建Piechart的VBA代码,vba,excel,dynamic,charts,Vba,Excel,Dynamic,Charts,作为VBA中sub()的最后一步,我尝试编写代码,在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

作为VBA中sub()的最后一步,我尝试编写代码,在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时,我从在线搜索中得到一个“method cells of object _GlobalFailed”错误,这似乎是因为数据源位置不够具体而触发的,但我不确定如何在定义工作表和单元格时更具体。我还尝试添加工作簿,但没有起到任何作用。

可能是一个常见错误,即您没有使用工作表完全限定所有范围/单元格引用。添加图表工作表时,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,感谢您的回复,代码与您添加的内容一起工作,感谢您解释它失败的原因。