VBA ChartObjects 创建内嵌图表
前面的内容,我们通过操作基本理解Excel图表的内部结构。
接下来,我们使用VBA代码来创建图表。
首先,我们学习内嵌图表的创建。
任务1:添加图表只显示学生的姓名与语文成绩。
步骤1:新建工作表Sheet3。并准备数据。
步骤2:编码
Sub sub1()
Dim chartObject1 As ChartObject
Dim chart1 As Chart
Dim r1 As Range
'定义一个区域,下一步借助此区域的位置来设置图表的位置
Set r1 = Worksheets("Sheet3").Range("F2:L13")
'创建图表,设置位置
Set chartObject1 = Worksheets("Sheet3").ChartObjects.Add(r1.Left, r1.Top, r1.Width, r1.Height)
Set chart1 = chartObject1.Chart
'设置数据源
chart1.SetSourceData Source:=Worksheets("Sheet3").Range("A1:B13")
'设置图表类型为柱状图
chart1.ChartType = xlColumnClustered '柱状图
'设置显示标题
chart1.HasTitle = True
'设置标题文本
chart1.ChartTitle.Caption = "学生成绩图表"
End Sub
Worksheets("Sheet3").ChartObjects 返回工作表的图表对象集合。
ChartObject.Add 添加一个图表,参数为起点横纵坐标,宽高,表示图表的位置与大小。
ChartObject的Chart成员为真正的Chart对象。
ChartTitle.Caption 设置标题文本时,必须先通过HasTitle设置可见。
步骤3:运行结果
任务2:有多余字段的表格创建图表
新建Sheet4,准备数据如下:
班级 | 姓名 | 学号 | 性别 | 语文 | 数学 |
---|---|---|---|---|---|
计科2301 | 小步教程 | 202361033001 | 男 | 76 | 84 |
计科2301 | 刘一 | 202361033002 | 女 | 89 | 82 |
计科2301 | 陈二 | 202361033003 | 男 | 82 | 80 |
计科2301 | 张三 | 202361033004 | 女 | 85 | 88 |
计科2301 | 李四 | 202361033005 | 男 | 73 | 95 |
计科2302 | 王五 | 202361033006 | 女 | 82 | 97 |
计科2302 | 赵六 | 202361033007 | 男 | 85 | 99 |
计科2302 | 孙七 | 202361033008 | 女 | 87 | 86 |
计科2303 | 周八 | 202361033009 | 男 | 69 | 82 |
计科2303 | 吴九 | 202361033010 | 女 | 70 | 70 |
计科2303 | 郑十 | 202361033011 | 男 | 61 | 99 |
计科2303 | 刘一 | 202361033011 | 男 | 83 | 77 |
通过Range获取需要的数据即可。
Range("B1:B13,E1:F13")
逗号表示两个区域相加。
完整代码如下
Sub sub1()
Dim chartObject1 As ChartObject
Dim chart1 As Chart
Dim worksheet1 As Worksheet
Dim r1 As Range
Set worksheet1 = Worksheets("Sheet4")
Set r1 = worksheet1.Range("H2:N13")
Set chartObject1 = worksheet1.ChartObjects.Add(r1.Left, r1.Top, r1.Width, r1.Height)
Set chart1 = chartObject1.Chart
'设置数据源时,只选择需要的列
chart1.SetSourceData Source:=worksheet1.Range("B1:B13,E1:F13")
chart1.ChartType = xlColumnClustered
chart1.HasTitle = True
chart1.ChartTitle.Caption = "学生成绩图表"
End Sub
运行效果如下