How should I create graphs in Excel using VBA?
我正在Excel上做一个报告,该报告将根据在电子表格中输入的数据为用户创建图形。我对VBA还是很陌生,尽管我认为我掌握了一些基本的表达式和结构,但我肯定很难理解可用于编码图形的选项。
基本的Google搜索会产生大量指南,以下是示例:
https://peltiertech.com/Excel/ChartsHowTo/QuickChartVBA.html
https://www.thespreadsheetguru.com/blog/2015/3/1/the-vba-coding-guide-for-excel-charts-graph
...并在Stack Overflow上进行搜索并浏览Microsoft帮助页面,可以提供一定程度的洞察力。但是,似乎有几种使用VBA制作图形的方法,而且我正努力理解不同代码示例中的细微差别。
例如,我不确定应该为图表使用哪些变量。使用
1 | Set cht = ws.Shapes.AddChart2(201, xlColumnClustered) |
或:
1 | ws.ChartObjects.Add(*Left, Top, Width, Height*) |
或:
1 | Set chtSht = Charts.Add |
...其中的每一个似乎都非常不同,我最终不明白这些差异的目的是什么。
我有一个预感,这主要与图表是否嵌入有关,尽管我不确定这在多大程度上会影响代码。
因此,对于那些比我更有经验并且可能比我能够消化Google搜索结果更有效地解决这些问题的人:我应该如何使用VBA在Excel中创建图形?
有四种语法可将嵌入式图表添加到工作表中。我将最先列出它们。
最古老的方法是添加图表表,然后将图表表放置到工作表上。不要使用它,它已经过时了。
1 2 | Charts.Add ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" |
这种方式将ChartObject直接添加到工作表中。 ChartObject是包含图表的一种特殊形状。这会使用括号中的尺寸和位置(必填)来添加默认图表(除非您定义了其他默认值,否则为聚集列)。它返回一个ChartObject。
1 | ActiveSheet.ChartObjects.Add(Left, Top, Width, Height) |
Excel 2007引入了此语法,其中包括图表类型(如果省略,则为默认类型)以及位置和大小(如果省略,图表为默认大小,即活动窗口中心的3乘5英寸)。 。它返回一个Shape。
1 | ActiveSheet.Shapes.AddChart(XlChartType, Left, Top, Width, Height) |
Excel 2013引入了另一种语法,该语法除了其他参数外还包括图表样式,并且还返回形状。
1 | ActiveSheet.Shapes.AddChart2(Style, XlChartType, Left, Top, Width, Height) |
我想一直使用
您应该做的是声明一个类型为
1 2 3 4 5 6 7 | Dim cht As Chart Set cht = ActiveSheet.ChartObjects.Add(100, 100, 360, 216).Chart Set cht = ActiveSheet.Shapes.AddChart(xlXYScatterLines, 100, 100, 360, 216).Chart Set cht = ActiveSheet.Shapes.AddChart2(240, xlXYScatterLines, 100, 100, 360, 216).Chart |
现在您可以在分配给