标签:VBA
图表和图形是Excel最好的功能之一,它们非常灵活,可以用来进行一些非常高级的可视化。本文可以作为在Excel中使用VBA绘制图表的指南。
本文中的代码示例演示了使用VBA处理最常见的图表选项,很好地利用这些代码,自动创建和修改图表。
注意,在Excel 2013中,对图表引擎和文档对象模型进行了许多更改,例如AddChart2方法取代了AddChart方法。因此,本文中提供的一些代码可能无法用于Excel 2013之前的版本。
Chart对象、图表和图表工作表
在Excel的对象层次模型中,许多东西存在于许多地方。例如,图表可以是工作表中的嵌入式图表,也可以是单独的图表工作表。
1.在工作表本身,可以找到图表对象。每个图表对象(ChartObject)中都有一个图表。实际上,ChartObject是一个包含图表的容器。
2.图表也是一个独立的工作表,它周围没有图表对象(ChartObject)。
要更改图表标题文本,将以不同的方式引用两种类型的图表:
1.工作表中的图表:
代码语言:javascript复制Sheets(“Sheet1”).ChartObjects(“Chart 1”).Chart.ChartTitle.Text = “我的图表标题”
2.图表工作表
代码语言:javascript复制Sheets(“Chart 1”).ChartTitle.Text = “我的图表标题”
编写代码以处理任一图表类型
如果想编写能够处理任何图表的代码,可以通过创建一个包含对图表的引用的变量来实现。
创建一个引用ChartObject内的图表的变量:
代码语言:javascript复制Dim cht As Chart
Set cht = Sheets("Sheet1").ChartObjects("Chart 1").Chart
创建一个引用工作表内图表的变量:
代码语言:javascript复制Dim cht As Chart
Set cht = Sheets("Chart 1")
现在,可以通过使用cht引用图表来为图表工作表或ChartObject中的图表编写VBA代码:
代码语言:javascript复制cht.ChartTitle.Text = "我的图表标题"
从空白图表创建图表
代码语言:javascript复制Sub CreateChart()
Dim rng As Range
Dim cht As Object
'创建空白图表
Set cht = ActiveSheet.Shapes.AddChart2
'对图表声明数据单元格区域
Set rng = ActiveSheet.Range("A2:B9")
'添加数据到图表
cht.Chart.SetSourceData Source:=rng
'设置图表类型
cht.Chart.ChartType = xlColumnClustered
End Sub
引用工作表中的图表
活动图表:
代码语言:javascript复制Dim cht As Chart
Set cht = ActiveChart
指定名称的图表:
代码语言:javascript复制Dim cht As Chart
Set cht = Sheets("Sheet1").ChartObjects("Chart 1").Chart
通过数字序号:
代码语言:javascript复制Dim cht As Chart
Set cht = Sheets("Sheet1").ChartObjects(1).Chart
其中,1是第一个被创建的图表,2是第二个被创建的图表,依此类推。
遍历工作簿中的所有图表工作表
代码语言:javascript复制Dim cht As Chart
For Each cht In ActiveWorkbook.Charts
Call AnotherMacro(cht)
Next cht
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。