Excel 2010 VBA 入门 104 利用VBA生成图表

本文详细介绍了如何通过VBA在Excel中创建图表,包括使用ChartObjects集合添加ChartObject、数据系列的管理、以及通过Chart对象设置数据源、类型和格式。实例展示了如何设置柱状图和折线图,以及如何通过宏操作调整图表属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

示例

代码

ChartObjects集合和ChartObject对象

数据系列(Series)对象

添加图表的其他方法

1.通过添加Chart对象添加图表

2.通过Shapes集合的AddChart方法添加图表


示例

月份产品A销售额产品B销售额
1月1247628
2月519936
3月1175792
4月1262802
5月760595
6月634916
7月752764
8月631751
9月8521181
10月8981333
11月1150562
12月14431017

代码

    在工作表中使用ChartObjects集合的Add方法添加一个图表容器,然后访问其Chart属性,为图表设置数据源、类型等,并设置图表的格式。
 

Option Explicit

Sub VBA创建图表()
    Dim sht As Worksheet
    Dim objCht As ChartObject
    Dim cht As Chart
    
    Set sht = Sheets("sheet1")
    With sht
        For Each objCht In .ChartObjects
            objCht.Delete
        Next objCht
     '创建图表
     Set objCht = sht.ChartObjects.Add(Left:=.Range("E1").Left, Top:=Range("E1").Top, Width:=360, Height:=250)
       
    End With
    
    '操作图表
    Set cht = objCht.Chart
    With cht
        '设置数据源
        .SetSourceData sht.Range("A1").CurrentRegion, xlColumns
        '设置图例位置
        .SetElement msoElementLegendBottom
        '删除Y中主要的网络线
        .Axes(xlValue).MajorGridlines.Delete
        '设置标题位置
        .SetElement msoElementChartTitleAboveChart
        '设置标题
        .ChartTitle.Text = "年度产品销售额对比"
        '设置系列1的类型为柱状图
        .SeriesCollection(1).ChartType = xlColumnClustered
        '设置系列2的类型为拆线图
        .SeriesCollection(2).ChartType = xlLine
    End With
End Sub

    Chart对象的属性和方法极其丰富,其复杂程度超过了单元格对象。但是好在开发者可以通过录制宏获取的代码了解其各个属性与方法,因而本例仅介绍关键的属性和方法。

ChartObjects集合和ChartObject对象

    ChartObjects集合是图表对象Chart的容器,当图表存在于工作表中时,必须嵌套在ChartObject对象中,一个图表对象对应一个ChartObject对象。ChartObjects集合则是ChartObject对象的集合,是工作表对象的子对象。当需要访问某个ChartObject对象时,可以使用以下形式访问ChartObject对象:

Workhsheet.ChartObjects(index )

或者

Workhsheet.ChartObjects(chartObjectName )

    其中,Worksheet表示工作表对象。参数index为ChartObject的序号,该序号从1开始,默认情况下为图表对象添加的先后顺序。参数chartObjectName为ChartObject的名称,即工作表中“名称框”中的名称。
    使用ChartObjects的Add方法可以添加一个ChartObject对象,当ChartObject对象被创建后,图表对象Chart也被自动创建。Add方法的语法为

ChartObjects.Add(Left,Top,Width,Height)

    参数Left和Top为图表的坐标。参数Width和Height为图表的尺寸。图表对象的坐标和尺寸是由ChartObject对象决定的,在创建该对象后需要指定该四个参数以确定其坐标和尺寸。开发者也可以通过修改该对象的Left、Top、Width和Height属性来修改其坐标和尺寸。

Chart对象

    当添加ChartObject对象之后,可以使用其Chart属性来访问图表对象(Chart),从而实现图表的真正创建。
    Chart对象创建后,可以使用SetSourceData方法设置其数据源,该方法的语法为

Chart.Se tSourceData(Source,PlotBy)

其中,Chart表不一个图表对象,通常是对ChartObject对象Chart属性的访问。
    参数Source为表示图表数据的单元格区域对象。
    参数PlotBy表示数据的绘制方式。当其值为xIColumns时,表示数据的一列为一个数据系列;当其值为xIRows时,则表示一行为一个数据系列。PlotBy同时也是Chart对象的一个属性,数据源添加完毕之后,也可以通过修改该属性的值来修改数据的绘制方式。当该参数省略时,则由Excel自行判断。本例需要比较B列和C列,因而按列区分数据系列,则该参数设置为xIColumns。
    图表的类型设置可以通过更改其ChartType属性实现。常用的ChartType属性赋值可以见表。

    常  量

   

    说  明

xlXYScatter

-4169

散点图

xlRadar

-4151

雷达图

xlDoughnut

-4120

圆环图

xlArea

1

面积网

xlLine

4

折线网

xlPie

5

饼图

xlBubble

15

气泡图

xlCo1umnClustered

51

簇状柱形图

xlBarClustered

57

簇状条形冈

数据系列(Series)对象

    所有的图表数据都是依据数据系列(Series)绘制的。在Chart对象中,可以使用SeriesCollection集合访问每个数据系列,其语法为:

Chart.SeriesCollection(Index)

    该表达式将返回一个数据系列(Series)对象。参数index表示数据系列的序号,该序号为从1开始的整数,最大不超过图表中数据系列的个数。

常用的数据系列(Series)对象的属性和方法见表。

    属性,方法

    说  明

Points

  数据点的集合.可以通过该方法访问各个数据点( Point)对象进行单独的设置

DataLabels

  数据标签的集合.

ChartType

  图表类型。

Format

  图表的格式属性,可以通过其访问图表格式对象ChartFormat,在该对象下的Fill等属性修改各个数据点的格式

Values

  图表数据系列的值的来源,可以为单元格区域对象或者一维数组。当在图表中使用SetSourceData方法设置了数据源后;则可以通过该属性得到每个数据系列的值

添加图表的其他方法

    添加图表共有3种方法,本例展示了通过添加ChartObject对象的方法添加图表。另两种方法如下:

1.通过添加Chart对象添加图表

    Chart对象和工作表对象同属于工作簿子对象,Chart对象是一个以表格形式呈现的单独的图表。
    Chart对象的添加可以通过Charts集合的Add方法完成,其语法为

Charts.Add(Before,After,Count,Type)

    该方法可以返回一个Chart对象。参数Before和After可以选择其一。与添加工作表类似,该参数表示图表添加的位置,可以为一个工作表对象或者图表对象。参数Count表示添加的数量。参数Type表示图表的类型。
    Chart对象与工作表中ChartObject的Chart属性所表示的Chart对象是相同的,只是其存放的位置不同而已。当需要在两者之间切换时,可以使用Chart对象的Location方法,该方法的语法为

Chart.Location(Where,Name)

    参数Where表示图表的位置。该参数可以为xILocationAsNewSheet(将图表单独存放在一个表中)、xILocationAsObject(图表以嵌入的方式存放于工作表中)或者xILocationAutomatic(由Excel自行处理)。
参数Name表示图表的名称。

2.通过Shapes集合的AddChart方法添加图表

    使用Shapes集合的AddChart方法同样可以添加一个ChartObject对象,从而添加一个图表Chart对象,其语法为

Worksheet.Shapes.AddChart(Type,Left,Top,Width,Height )

参数Type为图表的类型。参数Left、Top、Width、Height表示图表的位置和大小。

    该方法将在工作表中创建一个ChartObject对象,并返回一个Shape对象。由于无法通过Shape对象直接访问Chart对象。因而,使用该方法创建图表一般先使用Select方法选中图表,然后通过ActiveChart对象(当前选中的图表)访问图表Chart对象。创建录制宏代码时,可以发现当创建一个图表时,所录制的代码就是以该方法进行操作的。
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值