PowerPoint / Excel VBA - 更改图表的默认数据范围

时间:2018-03-03 20:34:13

标签: excel vba excel-vba powerpoint powerpoint-vba

我希望能够使用自己的Excel工作簿在PowerPoint中创建饼图。到目前为止,我已经创建了一个VBA脚本来添加图表。我还更改了图表的数据表,如下所示: Problem

以下核心问题仍然存在:

  • 我无法弄清楚,如何动态定义图表数据源表的数据范围

由于饼图的默认值属于这些范围,因此PowerPoint默认设置这些范围。如果我的数据表包含更多(或等于)4行数据,那么它就不会那么糟糕,因为范围会自动增加。但是,如示例所示,当只有3行数据时,范围不适应。

我想要的是:Needed(我只知道如何将数据放在正确的位置,而不是如何选择它)

相关的VBA代码如下:

Set diaPie = pres.Slides(3).Shapes.AddChart2(2, xlPie).Chart
Set pieChartData = diaPie.ChartData
Set pieWorkbook = pieChartData.Workbook
Set pieWorksheet = pieWorkbook.Worksheets(1)

pieWorksheet.UsedRange.Clear

With dataWorksheet
    id = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

a = dataWorksheet.Range("A1", dataWorksheet.Range("A1").Offset(id, 0))
b = dataWorksheet.Range("B1", dataWorksheet.Range("B1").Offset(id, 0))


pieWorksheet.Range("A2", pieWorksheet.Range("A2").Offset(id, 0)) = a
pieWorksheet.Range("B2", pieWorksheet.Range("B2").Offset(id, 0)) = b

提前致谢!

1 个答案:

答案 0 :(得分:0)

这应该会更改数据表中的数据范围。 maxrow只是数据的结尾。因此,如果您的数据在B1:B4中,则maxrow将为4

diaPie.SeriesCollection(1).values = "Sheet1!$B$1:$B" & maxrow  ' change the series range before opening and closing the workbook object
diaPie.SeriesCollection(1).XValues = "Sheet1!$A$1:$A" & maxrow  'Labels