对于我的工作,我正在通过 VBA 在 Excel 中编写一些宏。我需要制作一个堆积图表。通过打开宏记录器并手动将图表插入到工作表上,我得到了以下代码:
Range("Таблица1").Select
ActiveSheet.Shapes.AddChart2(286, xl3DColumnStacked100).Select
ActiveChart.SetSourceData Source:=Range("Лист1!$I$2:$J$3")
代码中没有什么复杂的。在第一行,我们选择我的智能表格,在第二行,我们创建一个图表对象并选择它,在第三行,我们设置 3D 堆叠图表的源数据范围。结果,我们得到了文件 Example.jpg 中显示的图表

但如果我们简单地按 F5 重复这段代码,我们将得到一个完全不同的图表!

我对这个结果不满意;我需要一个堆积图表!我请求社区帮助解决这个问题!
添加
, PlotBy:=xlRows到参数SetSourceData宏记录器生成的代码非常有用,主要作为参考。但宏记录器有很多缺点,包括。它不捕获许多动作。例如,设置图表的数据源 - 按行或按列。请参阅下面的屏幕截图:
绘制图表时,宏记录器应用可选
PlotBy方法参数的默认值Chart.SetSourceData,并逐列绘制图表,而不记录任何进一步的自定义。因此,要“按行”构建,您需要显式指定第二个参数PlotBy-xlRows。另外,宏记录器代码通常是多余的并且不是很方便。因此,我建议这样重写代码,明确指定sheet和table: