VBA ChartObjects 创建内嵌图表

前面的内容,我们通过操作基本理解Excel图表的内部结构。

接下来,我们使用VBA代码来创建图表。

首先,我们学习内嵌图表的创建。


任务1:添加图表只显示学生的姓名与语文成绩。

步骤1:新建工作表Sheet3。并准备数据。

img


步骤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:运行结果

img


任务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

运行效果如下

img