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
运行效果如下
前面的内容,我们通过操作基本理解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
运行效果如下