Excel图表操作Word格式.docx
- 文档编号:18064046
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:40
- 大小:2.52MB
Excel图表操作Word格式.docx
《Excel图表操作Word格式.docx》由会员分享,可在线阅读,更多相关《Excel图表操作Word格式.docx(40页珍藏版)》请在冰豆网上搜索。
•Source:
为一个Range对象,用来指定图表的源数据区域。
•PlotBy:
指定数据绘制方式。
可使用常量xlColumns(数据系列在行中)和xlRows(数据系列在列中)之一。
通过Chart对象的ChartTitle属性,可返回ChartTitle对象,该对象表示指定图表的标题。
通过该对象的属性可控制图表的标题,如设置标题文本、设置标题的格式等。
同时,要设置图表的内容,用户需要熟悉关于图表的属性。
其常见的属性如表7.1所示。
表7.1Chart对象的常用属性
名称
意义
BackWall
是一个只读属性,返回Walls对象,该对象允许用户单独对
三维图表的背景墙进行格式设置。
ChartArea
是一个只读属性,返回一个ChartArea对象,该对象表示图表
的整个图表区。
ChartStyle
是一个可读写的Variant型属性,用于返回或设置图表的图表
样式。
可以使用介于1到48之间的数字设置图表样式。
ChartTitle
是一个只读属性,用于返一个ChartTitle对象,表示指定图表
的标题。
ChartType
是一个可读写的XlChartType类型,用于返回或设置图表类
型。
DataTable
是一个只读属性,用于返回一个DataTable对象,表示此图表
的数据表。
HasAxis
是一个可读写的Variant类型属性,用于返回或设置图表上显
示的坐标轴。
HasDataTable
是一个可读写的Boolean型属性,如果图表有数据表,则该
属性值为True。
PlotArea
是一个只读属性,用于返回一个PlotArea对象,表示图表的
绘图区。
PlotBy
是一个Long型可读写,返回或设置行或列在图表中作为数据
系列使用的方式。
可为以下XlRowCol常量之一:
xlColumns或xlRows。
Visible
返回或设置一个XlSheetVisibility值,用于确定对象是否可
见。
Walls
是一个只读属性,返回一个Walls对象,此表示三维图表的
背景墙。
3.案例说明
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根据该数据,用户需要用VBA代码创建图表工作表,其中原始数据如图7.1所示。
图7.1原始数据
4.编写代码
销量分析图表的VBA代码如下:
SubCreatCharts()DimchtAsChart
Setcht=Charts.AddWithcht
.SetSourceDataSource:
=Sheets("
Sheet1"
).Range("
A1:
E6"
),PlotBy:
=xlRows
.ChartType=xlColumnClustered
.HasTitle=True
.ChartTitle.Text="
销量数据图"
EndWith
EndSub
5.运行结果
运行程序代码,查看运行的结果,如图7.2所示。
图7.2创建图表工作表
6.程序分析
如果用户对图表的属性不熟悉的时候,可以使用宏功能来创建图表。
查看宏代码中的图表属性和代码。
案例137创建嵌入式图表
在ExcelVBA中,图表工作表和嵌入式图表是不同的对象。
但是,用户同样可以通过
VBA代码来创建嵌入式图表。
在ExcelVBA中,嵌入到工作表中的图表对象为ChartObject对象。
ChartObjects集合包含指定工作表上所有的ChartObject对象的集合。
每个ChartObject对象都代表一个嵌入图表。
ChartObject对象充当Chart对象的容器。
ChartObject对象的属性和方法控制工作表上嵌入图表的外观和大小。
通过ChartObjects集合的Add方法,可向集合中添加嵌入式图表。
表达式.Add(Left,Top,Width,Height)该方法的4个参数指定嵌入式图表尺寸,分别设置左上角的坐标位置和图表的初始大
小。
使用ChartObjects集合的Delete方法可删除指定工作表的嵌入式图表。
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根据该数据,用户需要用VBA代码创建嵌入式图表,其中原始数据如图7.3所示。
图7.3原始数据
创建嵌入式图表的VBA代码如下:
SubCreatInsertCharts()
DimchtAsChartObjectOnErrorResumeNext
ActiveSheet.ChartObjects.Delete
OnErrorGoTo0
WithRange("
A10:
F20"
)
Setcht=ActiveSheet.ChartObjects.Add(_
.Left,.Top,.Width,.Height)EndWith
Withcht
.Name="
SaleChart"
With.Chart
.SetElementmsoElementChartTitleCenteredOverlay
EndWithEndSub
运行程序代码,查看运行的结果,如图7.4所示。
图7.4创建嵌入式图表
在上面的代码中,首先删除当前工作表中的嵌入图表,如果当前工作表中没有嵌入图表,执行Delete方法时将出现错误,所以需使用错误捕捉语句获取错误。
接着使用ChartObjects集合对象的Add方法添加一个嵌入式图表,最后设置图表对象的相关属性。
案例138确定图表的位置
在用户使用图表分析和显示数据的时候,常常需要根据需要确定图表的位置。
用户可以通过VBA代码实现该功能。
在ExcelVBA中,用户可以通过Chart对象的Location方法,可改变图表的放置位置。
该方法的语法格式如下:
表达式.Location(Where,Name)
两个参数的含义如下:
•Where:
用来设置图表移动的目标位置。
可设置为xlLocationAsNewSheet(将图表移动到新工作表)、xlLocationAsObject(将图表嵌入到现有工作表中)或xlLocationAutomatic(Excel控制图表位置)三个常量之一。
•Name:
如果Where为xlLocationAsObject,则该参数为必选参数。
如果Where为xlLocationAsObject,则该参数为嵌入该图表的工作表的名称。
如果Where为xlLocationAsNewSheet,则该参数为新工作表的名称。
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根据该数据,用户需要用VBA代码确定图表的不同位置,其中原始数据如图7.5所示。
图7.5原始数据
(1)嵌入图表转图表工作表的VBA代码如下:
SubChartForm1()
Setcht=ActiveSheet.ChartObjects
(1)
IfchtIsNothingThenExitSub
cht.Chart.LocationxlLocationAsNewSheet,"
(2)图表工作表转嵌入图表的VBA代码如下:
SubChartForm2()DimchtAsChart
DimchtoAsChartObjectOnErrorResumeNext
Setcht=Charts("
cht.LocationxlLocationAsObject,ActiveSheet.NameSetchto=ActiveSheet.ChartObjects
(1)
)chto.Top=.Topchto.Left=.Leftchto.Width=.Widthchto.Height=.Height
EndWith
运行将嵌入图表转图表工作表的程序代码,查看运行的结果,如图7.6所示。
图7.6嵌入图表转图表工作表
运行图表工作表转嵌入图表的代码,查看运行的结果,如图7.7所示。
图7.7图表工作表转嵌入图表
在上面第一段代码中,通过工作表的ChartObjects集合返回的是一个ChartObject对象,要改变其位置,需使用该对象的Chart属性返回一个Chart对象,通过Chart对象的Location方法才能改变图表对象的位置。
案例139删除图表
在ExcelVBA中,用户除了可以使用代码创建图表,还可以使用代码删除图表。
在本小节中,将结合具体的例子来演示如何使用VBA删除图表。
本例使用了ChartObject对象的三个方法来完成相应的功能,各方法的含义如下:
•BringToFront:
将图表放到z-次序前面,即将图表显示在最前面。
•Activate:
使当前图表成为活动图表(激活图表)。
•Delete:
删除图表。
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根据该数据,用户需要用VBA代码演示如何删除图表,其中原始数据如图7.8所示。
图7.8原始数据
删除图表的VBA代码如下:
SubDeleteChart()
DimchtAsChartObject
ForEachchtInActiveSheet.ChartObjectscht.BringToFront
cht.Activate
IfMsgBox("
删除图表?
"
vbQuestion+vbYesNo,"
删除图表"
)=vbYesThencht.Delete
EndIfNext
运行程序代码,查看运行的结果,如图7.9所示。
图7.9删除第一个图表
单击“是”按钮后,删除第二个图表,如图7.10所示。
图7.11删除第二个图表
单击“是”按钮,查看删除后的结果,如图7.12所示。
图7.12删除图表后的工作表
在本例中,通过循环语句依次激活工作表中的图表对象,然后将其激活,提示用户是否删除图表。
这种方法十分常见。
7.2设置图表的属性
在ExcelVBA中,用户除了可以创建和删除图表,还可以设置图表的属性。
在本小节中,将结合具体的例子来讲解如何使用VBA设置图表的属性。
案例140确定是否是图表工作表
在使用Excel分析数据的时候,首先需要判断工作表的类型。
数据工作表和图表工作表在属性上有明显的不同,因此首先判断工作表是否是图表工作表十分必要。
2.语法说明
在ExcelVBA中,用户可以使用TypeName函数判断工作表的类型,该函数的语法格式如下:
TypeName(varname)参数varname包含用户定义类型变量之外的任何变量。
TypeName函数的返回值为一个字符串,该字符串可能是数据类型名称,或者是对象名称。
例如,在本例中,图表工作
表的返回值为“Chart”,普通工作表的返回值为“Worksheet”。
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根据该数据,用户创建对应的图表。
现在需要通过VBA判断图表工作表,其中原始数据如图7.13所示。
确定是否是图表工作表的VBA代码如下:
SubCheckChartForm()DimiAsInteger
Fori=1ToActiveWorkbook.Sheets.CountIfTypeName(Sheets(i))="
Chart"
ThenSheets("
).Activate
MsgBox"
工作表"
&
Sheets(i).Name&
"
是图表工作表!
运行程序代码,查看运行的结果,如图7.14所示。
图7.14运行程序结果
在本例中,首先通过Sheets对象的Count方法统计该工作薄中的工作表个数。
然后使用For循环检测各个工作表的类型。
案例141添加网格线
在Excel图表中,网格线是一个重要的工具。
为图表添加合适的网格线,用户可以方便的查看图表中的数值。
在ExcelVBA中,设置图表网格线的属性,主要使用Axis.HasMajorGridlines属性和Axis.HasMinorGridlines属性。
其中,Axis.HasMajorGridline属性用来设置图表的主要网格线。
如果坐标轴有主要网格线,则该值为True。
只有主要坐标轴组中的坐标轴才能有网格线。
其语法表达式如下:
表达式.HasMajorGridlines表达式表示代表Axis对象的变量。
Axis.HasMinorGridlines属性用来设置图表的次要网格线。
如果坐标轴有次要网格线,则该值为True。
只有主要坐标轴组中的坐标轴才能有
网格线。
表达式.HasMinorGridlines
表达式表示代表Axis对象的变量。
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根据该数据,用户创建了对应的图表。
现在需要设置图表的网格线属性,其中原始数据和图表如图7.15所示。
(1)设置所有网格线的代码如下:
SubAddMajorAxis()DimObjAxis
ForEachObjAxisInActiveChart.AxesObjAxis.HasMajorGridlines=TrueObjAxis.HasMinorGridlines=True
NextObjAxis
(2)添加主要网格线的代码如下:
SubDeleteMinorAxis()DimObjAxis
ForEachObjAxisInActiveChart.AxesObjAxis.HasMajorGridlines=TrueObjAxis.HasMinorGridlines=False
(3)删除所有网格线的代码如下:
SubDeleteAllAixs()DimObjAxis
ForEachObjAxisInActiveChart.AxesObjAxis.HasMajorGridlines=FalseObjAxis.HasMinorGridlines=False
选中工作表中的图表,运行第一段代码,查看程序运新的结果,如图7.16所示。
图7.16添加所有网格线
选中工作表中的图表,运行第二段程序代码,查看运行的结果,如图7.17所示。
图7.17添加主要网格线
选中工作表中的图表,运行第三段程序代码,查看运行的结果,如图7.18所示。
图7.18删除所有的网格线
在本例的代码比较简单,在实际开发过程中,用户可以通过程序代码设置每个坐标轴的网格线属性。
有兴趣的读者可以自行测试。
案例142自定义数据源
在Excel中,用户可以根据具体情况来设置图表的数据源。
同时,可以使用程序代码动态的修改图表的数据源。
在ExcelVBA中,使用Chart对象的SetSourceData方法,可为指定图表设置源数据区域。
该方法的语法格式如下:
•Sourceo指定源数据区域的Range对象。
•PlotBy设置数据绘制方式。
可为常量xlColumns(数据系列在行中)或xlRows(数据系列在列中)之一。
某公司统计了该公司武汉、北京、上海、深圳和重庆地区的四个季度的销量数据,根
据该数据,用户创建了对应的图表。
现在需要编写VBA代码,使用户可以动态修改数据源,其中原始数据和图表如图7.19所示。
图7.19原始数据
自定义数据源的VBA代码如下:
SubSetChartData()
DimNewDataAsRange
IfActiveChartIsNothingThenMsgBox"
没有选中图表!
ExitSubEndIf
SetNewData=Application.InputBox(prompt:
="
自定义数据源。
Type:
=8)ActiveChart.SetSourceDataSource:
=NewData
不选中任何图表,运行程序代码,查看程序运行的结果,如图7.20所示。
图7.20不选中图表运行程序
选中工作表中的默认图表,然后运行程序代码,如图7.21所示。
图7.21选择新的数据源
单击对话框中的“确定”按钮,查看修改后的图表,如图7.22所示。
图7.22修改后的图表
在上面的代码中,首先判断用户是否选中图表,接着弹出对话框让用户输入或选择新的数据源区域,最后使用SetSourceData方法为图表设置新的数据源。
案例143添加图表的阴影
用户可以使用VBA代码设置图表的各种外观属性,在本例中,将演示如何使用代码添加图表的阴影。
在ExcelVBA中,获取对ShadowFormat对象的引用后,通过该对象的属性就可控制图表对象的阴影效果。
本例使用了以下属性设置阴影效果:
•Visible属性:
设置阴影是否可见;
•Blur属性:
返回或设置指定底纹的模糊度;
•Transparency属性:
返回或设置指定填充的透明度,取值范围为0.0(不透明)到1.0
(清晰)之间;
•OffsetX属性:
以磅为单位返回或设置指定形状的阴影的水平偏移量。
正偏移值将阴影向右偏移,负偏移值将阴影向左偏移;
•OffsetY属性:
以磅为单位返回或设置指定形状阴影的垂直偏移。
正偏移值将阴影向
下偏移,负偏移值将阴影向上偏移。
现在需要编写VBA代码,为原始的图表添加阴影,其中原始数据和图表如图7.23所示。
图7.23原始数据
为图表添加阴影的VBA代码如下:
SubAddChartShadow()
没有选择图表!
WithActiveChart.ChartArea.Format.Shadow
.Visible=msoTrue
.Blur=15
.Transparency=0.2
.OffsetX=6
.OffsetY=6EndWith
WithActiveChart.PlotArea.Format.Shadow
.Blur=4
.OffsetX=3
.OffsetY=3EndWith
选中原始图表,运行程序代码,查看程序运行的结果,如图7.24所示。
图7.24添加图表的阴影
以上代码首先检查是否选中了图表,接着设置图表外部区域的阴影效果,最后设置图表中绘制区域的阴影效果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel 图表 操作