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