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

目录

示例

代码

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

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

代码

    在工作表中使用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对象。创建录制宏代码时,可以发现当创建一个图表时,所录制的代码就是以该方法进行操作的。
 

 

 

    原文作者:ngbshzhn
    原文地址: https://blog.csdn.net/ngbshzhn/article/details/118667220
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞