搜档网
当前位置:搜档网 › 使用VBA自动生成图表

使用VBA自动生成图表

使用VBA自动生成图表
使用VBA自动生成图表

技巧1

使用V BA自动生成图表

在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用VBA代码可以在工作表中自动生成图表,如下面的示例代码。

Sub ChartAdd( )

Dim myRange As Range

Dim myChart As ChartObje ct

Dim R As Integer

With

Sheet1

.ChartObj ects.Dele te

R= .Range("A 65536").E nd(xlUp). Row

Set myRange= .Range("A "&1& ":B" & R) Set myChart= .ChartObj ects.Add( 120,40, 400, 250)

With myChart.C hart

.ChartTyp e= xlColumnC lustered .SetSourc eData Source:=m yRange, PlotBy:=x lColumns

.ApplyDat aLabels ShowValue :=True

.HasTitle = True

.ChartTit le.Text= "图表制作示例"

With

.ChartTit le.Font

.Size= 20

.ColorInd ex = 3

.Name="华文新魏"

End With

With

.ChartAre a.Interio r

.ColorInd ex = 8

.PatternC olorIndex = 1

.Pattern = xlSolid End With With

.PlotArea .Interior

.ColorInd ex = 35

.PatternC olorIndex = 1

.Pattern = xlSolid End With

.SeriesCo llection( 1).DataLa bels.Dele te

With

.SeriesCo llection( 2).DataLa bels.Font .Size= 10

.ColorInd ex = 5 End With

End With

End With

Set myRange= Nothing

Set myChart= Nothing

End Sub 代码解析:ChartAdd 过程在工作表中自动生成图表,图表类型为簇状柱形图。

第6行代码使用Delete方法删除工作表中已经存在的图表,而ChartObje cts方法返回代表工作表中单个嵌入图表(ChartOb ject对象)或所有嵌入图表的集合(ChartOb jects对象)的对象,语法如下:expressio n.ChartOb jects(Ind ex)

Index是可选的,指定图表的名称或号码。该参数可以是数组,用于指定多个图表,因为示例中只有一个图表,所以无需指定其Index参数。

第8行代码指定图表的数据源。

第9行代码使用Add方法创建一个新图表,应用于ChartObje cts对象的Add方法创建新的嵌入图表,语法如下:expressio n.Add(Lef t,Top, Width, Height)

Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1的左上角或图表的左上角的坐标。参数Width 、Height 是必需,以磅为单位给出新对象的初始大小。第10行代码使用Chart属性返回新创建的图表,应用于ChartObje ct对象的Chart属性返回一个Chart对象,该对象代表指定对象所包含的图表。

码指定新创建图表的图表类型,应用于Chart对象的ChartType 属性返回或设置图表的类型,可以为XlChartTy pe常量之一,具体请参阅VBA帮助。本例中设置为xlColumn Clustered 即图表类型为簇状柱形图。第12行代码指定图表的数据源和绘图方式,应用于Chart 对象的SetSource Data方法为指定图表设置源数据区域,语法如下:expressio n.SetSour ceData(So urce, PlotBy)

参数expressio n是必需的,该表达式返回一个Chart 对象。

参数Source是可选的,源数据的区域。

参数PlotBy是可选的,指定数据绘制方式,可为xlColumns (系列产生在列)或xlRows (系列产生在行)。

第13行代码使用ApplyData Labels方法使图表显示数据标签和数据点的值,应用于Chart对象的ApplyData Labels方法将数据标签应用于图表中的某一数据点、某一数据系列或所有数据系列,语法如下:

expressio

n.ApplyDa

taLabels(

Type,

LegendKey

,

AutoText,

HasLeader

Lines,

ShowSerie

sName,

ShowCateg

oryName,

ShowValue

,

ShowPerce

ntage,

ShowBubbl

eSize,

Separator

)

参数

expressio

n是必需

的,该表

达式返回

一个Chart

对象。

参数Type

是可选

的,要应

用的数据

标签的类

型,可为

表格60?1

所列的

XlDataLab

elsType常

量之一。

常量值描述xlDataLabel

sShowBubbl

eSizes

6无

xlDataLabel sShowLabel AndPercent 5占总数的百

分比及数据

点所属的分

类。仅用于

饼图或圆环

图。

xlDataLabel sShowPerce nt 3占总数的百

分比。仅用

于饼图或圆

环图。

xlDataLabel sShowLabel 4数据点所属

的分类。

xlDataLabel sShowNone -4142无数据标签

xlDataLabel sShowValue 2数据点的

值,若未指

定本参数,

默认使用此

设置。

表格 60?1

DataLabelsType 常量参数

LegendKe

y是可选

的,如果

该值为

True,则

显示数据

点旁的图

例项标示

。默认值

为False。

参数

AutoText

是可选

的,如果

对象根据

内容自动

生成正确

的文字,

则该值为

True。

参数

HasLeade

rLines是可

选的,如

果数据系

列具有引

导线,则

该值为

True。

参数

ShowSeri

esName是

可选的,

数据标签

的系列名

称。

ShowCate goryName 是可选的,数据标签的分类名称。参数ShowValu e是可选的,数据标签的值。

参数ShowPerc entage是可选的,数据标签的百分比。

参数ShowBub bleSize是可选的,数据标签的气泡尺寸。

参数Separator 是可选的,数据标签的分隔符。

行代码设置新创建的图表有可见的标题并设置图表标题的文字。应用于Chart对象的HasTitle 属性,如果坐标轴或图表有可见标题,则该值为True,而ChartTitle 属性返回一个ChartTitle 对象,代表指定图表的标题。

第16行到第20行代码设置图表标题文字的格式。

第21行到第25行代码设置图表区的颜色。

第26行到第30行代码设置绘图区的颜色。

码删除图表上第一个数据系列中的数据标签。SeriesColl ection方法返回图表或图表组中单个数据系列(Series 对象)或所有数据系列的集合(SeriesC ollection集合)的对象,语法如下:expressio n.SeriesC ollection (Index)

可选的Index参数指定数据系列的名称或编号。

而DataLabel s方法则返回代表数据系列中的单个数据标签(DataLab el对象)或所有数据标签的集合(DataLab els集合)的对象,语法如下:expressio n.DataLab els(Index )

Index参数

指定数据

系列中的

数据标签

的编号。

第32行到

第36行代

码设置图

表上第二

个数据系

列中的数

据标签的

字体格式

运行

ChartAdd

过程,在

工作表中

创建簇状

柱形图,

如图60?1

所示。

图 60?1创建簇状柱形图

相关主题