ExcelVBA处理图形图表.docx

上传人:b****8 文档编号:11462554 上传时间:2023-03-01 格式:DOCX 页数:32 大小:530.38KB
下载 相关 举报
ExcelVBA处理图形图表.docx_第1页
第1页 / 共32页
ExcelVBA处理图形图表.docx_第2页
第2页 / 共32页
ExcelVBA处理图形图表.docx_第3页
第3页 / 共32页
ExcelVBA处理图形图表.docx_第4页
第4页 / 共32页
ExcelVBA处理图形图表.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

ExcelVBA处理图形图表.docx

《ExcelVBA处理图形图表.docx》由会员分享,可在线阅读,更多相关《ExcelVBA处理图形图表.docx(32页珍藏版)》请在冰豆网上搜索。

ExcelVBA处理图形图表.docx

ExcelVBA处理图形图表

Shape〔图形〕、Chart〔图表〕对象在工作表中添加图形

假如需要在工作表中添加图形对象,可以使用AddShape方法,如下面的代码所示。

#001SubAddShape()

#002DimmyShapeAsShape

#003OnErrorResumeNext

#004Sheet1.Shapes("myShape").Delete

#005SetmyShape=Sheet1.Shapes.AddShape(msoShapeRectangle,40,120,280,30)

#006WithmyShape

#007.Name="myShape"

#008

#009.Text="单击将选择Sheet2!

"

#010With.Font

#011.Name="华文行楷"

#012.FontStyle="常规"

#013.Size=22

#014.ColorIndex=7

#015EndWith

#016EndWith

#017With.TextFrame

#018.HorizontalAlignment=-4108

#019.VerticalAlignment=-4108

#020EndWith

#021.Placement=3

#022EndWith

#023

#024

#025With.Line

#026.Weight=1

#027.DashStyle=msoLineSolid

#028.Style=msoLineSingle

#029.Transparency=0

#030.Visible=msoTrue

#031.ForeColor.SchemeColor=40

#032.BackColor.RGB=RGB(255,255,255)

#033EndWith

#034With.Fill

#035.Transparency=0

#036.Visible=msoTrue

#037.ForeColor.SchemeColor=41

#038.OneColorGradient1

#039EndWith

#040EndWith

#041Sheet1.Range("A1").Select

#042Sheet1.Hyperlinks.AddAnchor:

=myShape,Address:

="",_

#043SubAddress:

="Sheet2!

A1",ScreenTip:

="选择Sheet2!

"

#044SetmyShape=Nothing

#045EndSub

代码解析:

AddShape过程在工作表中添加一个矩形并设置其外观等属性。

第2行代码声明变量myShape的对象类型。

第3、4行代码删除可能存在的名称为“myShape〞的图形对象。

第5行代码使用AddShape方法在工作表中添加一个矩形。

当该方法应用于Shapes对象时,返回一个Shape对象,该对象代表工作表中的新自选图形,语法如下:

expression.AddShape(Type,Left,Top,Width,Height)

参数expression是必需的,返回一个Shapes对象。

参数Type是必需的,指定要创立的自选图形的类型。

参数Left和Top是必需的,以磅为单位给出自选图形边框左上角的位置。

参数Width和Height是必需的,以磅为单位给出自选图形边框的宽度和高度。

第7行代码将新建图形命名为“myShape〞,向Shapes集合添加新的图形时,将对新添加的图形赋以默认的名称,假设要为图形指定更有意义的名称,可指定其Name属性。

第8行到第16行代码为矩形添加文字,并设定其格式。

其中第8行代码使用TextFrame属性和Characters方法返回该矩形的字符区域。

应用于Shape对象的TextFrame属性返回一个TextFrame对象,该对象包含指定图形对象的对齐和定位属性;Characters方法返回一个Characters对象,该对象代表某个图形的文本框中的字符区域,语法如下:

expression.Characters(Start,Length)

参数expression是必需的,返回一个指定文本框内Characters对象的表达式。

参数Start是可选的,表示将要返回的第一个字符,假如此参数设置为1或被忽略,那么Characters方法会返回以第一个字符为起始字符的字符区域。

参数Length是可选的,表示要返回的字符个数。

假如此参数被忽略,那么Characters方法会返回该字符串的剩余局部〔由Start参数指定的字符以后的所有字符〕。

第9行代码为矩形添加文字,应用于Characters对象的Text属性返回或设置对象的文本,为可读写的String类型。

第10行到第15行代码设置矩形中文字的属性,应用于Characters对象Font属性返回一个Font对象,该对象代表指定对象的字体属性〔字体名称、字体大小、字体颜色等〕,第11行代码设置字体名称,第12行代码设置字体款式,第13行代码设置字体大小,第14行代码颜色。

第17行到第20行代码设定矩形中文字的对齐方式。

应用于TextFrame对象的HorizontalAlignment属性返回或设置指定对象的程度对齐方式,可为表格531所示的XlHAlign常量之一。

常量

描绘

xlHAlignCenter

-4108

居中

xlHAlignCenterAcrossSelection

7

靠左

xlHAlignDistributed

-4117

分散对齐

xlHAlignFill

5

分散对齐

xlHAlignGeneral

1

靠左

xlHAlignJustify

-4130

两端对齐

xlHAlignLeft

-4131

靠左

xlHAlignRight

-4152

靠右

表格531HorizontalAlignment属性的XlHAlign常量

应用于TextFrame对象的VerticalAlignment属性返回或设置指定对象的垂直对齐方式,可为表格532所示的XlHAlign常量之一。

常量

描绘

xlVAlignCenter

-4108

居中

xlVAlignJustify

-4130

两端对齐

xlVAlignBottom

-4107

靠下

xlVAlignDistributed

-4117

分散对齐

xlVAlignTop

-4160

靠上

表格532VerticalAlignment属性的XlHAlign常量

第21行代码设置矩形大小和位置不随单元格而变,应用于Shape对象的Placement属性返回或设置对象与所在的单元格之间的附属关系,可为表格533所示的XlPlacement常量之一。

常量

描绘

xlFreeFloating

3

大小、位置均固定

xlMove

2

大小固定、位置随单元格而变

xlMoveAndSize

1

大小、位置随单元格而变

表格533XlPlacement常量

第24行到第32行代码设置矩形的边框线条格式,应用于ShapeRange集合的Line属性返回一个LineFormat对象,该对象包含指定图形的线条格式属性。

其中第26行代码设置矩形线条粗细,第27行代码设置矩形线条的虚线款式,第28行代码设置矩形填充的透明度,第29行代码设置矩形为可见,第30行代码设置矩形的前风光,第31行代码设置矩形填充背景的颜色。

第33行到第38行代码设置矩形的内部填充格式,应用于ShapeRange集合的Fill属性返回FillFormat对象,该对象包含指定的图表或图形的填充格式属性。

其中第35行代码设置矩形内部的透明度,第36行代码设置矩形内部为可见,第37行代码设置矩形内部的前风光,第38行代码将矩形内部指定填充设为单色渐变,应用于FillFormat对象的OneColorGradient方法将指定填充设为单色渐变,语法如下:

eColorGradient(Style,Variant,Degree)

其中参数Style是必需的,底纹款式,可为表格541所示的MsoGradientStyle常量之一。

常量

描绘

msoGradientDiagonalDown

4

斜下

msoGradientDiagonalUp

3

斜上

msoGradientFromCenter

7

msoGradientFromCorner

5

角部幅射

msoGradientFromTitle

6

中心幅射

msoGradientHorizontal

1

程度

msoGradientMixed

-2

msoGradientVertical

2

垂直

表格534MsoGradientStyle常量

参数Variant是必需的,渐变变量。

取值范围为1到4之间,分别与“填充效果〞对话框中“渐变〞选项卡的四个渐变变量相对应。

假如GradientStyle设为msoGradientFromCenter,那么Variant参数只能设为1或2。

参数Degree是必需的,灰度。

取值范围为0.0〔表示最深〕到1.0〔表示最浅〕之间。

第42、43行代码为矩形对象添加超链接,应用于Hyperlinks对象的Add方法向指定的区域或图形添加超链接,语法如下:

expression.Add(Anchor,Address,SubAddress,ScreenTip,TextToDisplay)

参数expression是必需的,返回一个Hyperlinks对象。

参数Anchor是必需的,超链接的位置。

可为Range对象或Shape对象。

参数Address是必需的,超链接的地址。

参数SubAddress是必需的,超链接的子地址。

参数ScreenTip是可选的,当鼠标指针停留在超链接上时所显示的屏幕提示。

参数TextToDisplay是可选的,要显示的超链接的文本。

运行AddShape过程结果如图531所示。

图531在工作表中添加图形

技巧1导出工作表中的图片

有时需要将工作表中的图形对象保存为单独的图像文件,可以使用Export方法将工作表中的图片以文件形式导出,如下面的代码所示。

#001SubExportShp()

#002DimShpAsShape

#003DimFileNameAsString

#004

#005IfShp.Type=msoPictureThen

#006FileName=ThisWorkbook.Path&"\"&Shp.Name&".gif"

#007

#008WithSheet1.ChartObjects.Add(0,0,Shp.Width+28,Shp.Height+30).Chart

#009.Paste

#010.ExportFileName,"gif"

#011

#012EndWith

#013EndIf

#014Next

#015EndSub

代码解析:

ExportShp过程将Sheet1工作表的所有图片以文件形式导出到同一目录中。

第4行代码使用ForEach...Next语句遍历Sheet1工作表中的所有图形。

第5行代码判断图形的类型是否为图片,应用于Shape对象的Type属性返回或设置图形类型,可以为表格541所示的MsoShapeType常量之一。

常量

说明

msoShapeTypeMixed

-2

混合型图形

msoAutoShape

1

自选图形

msoCallout

2

没有边框线的标注

msoChart

3

图表

msoComment

4

批注

msoFreeform

5

任意多边形

msoGroup

6

图形组合

msoFormControl

8

窗体控件

msoLine

9

线条

msoLinkedOLEObject

10

链接式或内嵌OLE对象

msoLinkedPicture

11

剪贴画或图片

msoOLEControlObject

12

ActiveX控件

msoPicture

13

图片

msoTextEffect

15

艺术字

msoTextBox

17

文本框

msoDiagram

21

组织构造图或其他图示

表格541MsoShapeType常量

第6行代码使用字符串变量FileName记录需导出图形的途径和名称。

第7行代码复制图形,应用于Shape对象的Copy方法将对象复制到剪贴板。

第8行代码使用Add方法在工作表中添加一个图表,应用于ChartObjects对象的Add方法创立新的嵌入图表,语法如下:

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

参数expression是必需的,返回一个ChartObjects对象。

参数Left、参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1的左上角或图表的左上角的坐标。

参数Width、参数Height是必需的,以磅为单位给出新对象的初始大小。

第9行代码使用Paste方法将图形粘贴到新的嵌入图表中,应用于Chart对象的Paste方法将剪贴板中的图表数据粘贴到指定的图表中,语法如下:

expression.Paste(Type)

参数expression是必需的,返回一个Chart对象。

参数Type是可选的的,假如剪贴板中有图表,本参数指定要粘贴的图表信息。

可为以下XlPasteType常量之一:

xlFormats、xlFormulas或xlAll。

默认值为xlAll,假如剪贴板中是数据不是图表,那么不能使用本参数。

第10行代码使用Export方法将图表导出到同一目录中,应用于Chart对象的Export方法以图形格式导出图表,语法如下:

expression.Export(Filename,FilterName,Interactive)

其中参数Filename是必需的,被导出的文件的名称。

第10行代码删除新建的图表。

因为Chart对象是不能使用Delete方法直接删除的,应先使用Parent属性返回指定对象的父对象,然后使用Delete方法删除。

技巧2在工作表中添加艺术字

在工作表中插入艺术字,可以使用AddTextEffect方法,如下面的代码所示。

#001SubTextEffect()

#002DimmyShapeAsShape

#003OnErrorResumeNext

#004Sheet1.Shapes("myShape").Delete

#005SetmyShape=Sheet1.Shapes.AddTextEffect_

#006(PresetTextEffect:

=msoTextEffect15,_

#007Text:

="我爱ExcelHome",FontName:

="宋体",FontSize:

=36,_

#008FontBold:

=msoFalse,FontItalic:

=msoFalse,_

#009Left:

=100,Top:

=100)

#010WithmyShape

#011.Name="myShape"

#012With.Fill

#013.Solid

#014.ForeColor.SchemeColor=55

#015.Transparency=0

#016EndWith

#017With.Line

#018.Weight=1.5

#019.DashStyle=msoLineSolid

#020.Style=msoLineSingle

#021.Transparency=0

#022or=12

#023.BackColor.RGB=RGB(255,255,255)

#024EndWith

#025EndWith

#026SetmyShape=Nothing

#027EndSub

代码解析:

TextEffect过程在工作表中插入艺术字并设置其格式。

第3、4行代码删除工作表中可能存在的艺术字,以免重复添加。

第5行到第9行代码使用AddTextEffect方法在工作表中插入艺术字,AddTextEffect方法创立艺术字对象。

返回一个Shape对象,该对象代表新建的艺术字对象,语法如下:

expression.AddTextEffect(PresetTextEffect,Text,FontName,FontSize,FontBold,FontItalic,Left,Top)

参数expression是必需的,返回一个Shapes对象。

参数PresetTextEffect是必需的,艺术字预置文本效果,可为MsoPresetTextEffect常量之一,等同于在工作表中插入艺术字时的款式选项卡,如图551所示。

图551艺术字款式

参数Text是必需的,艺术字对象中的文字。

参数FontName是必需的,艺术字对象中所用的字体名称。

参数FontSize是必需的,以磅为单位给出艺术字对象中所用的字体大小。

参数FontBold是必需的,在艺术字中要加粗的字体。

参数FontItalic是必需的,在艺术字中要倾斜的字体。

参数Left和参数Top是必需的,相对于文档的左上角、顶部,以磅为单位给出艺术字对象边框左上角的位置。

第11行代码将艺术字对象重命名为“myShape〞。

第12行到第16行代码设置艺术字对象的填充格式。

其中第13行代码将填充格式设置为均一的颜色,应用于FillFormat对象的Solid方法将指定的填充格式设置为均一的颜色,可用本方法将带有渐进色、纹理、图案或背景的填充格式转换为单色的填充格式。

第14行代码设置填充的颜色。

第15行代码设置填充的透明度。

第17行到第24行代码设置艺术字对象的线条格式属性。

其中第18行代码设置线条粗细,第19行代码设置线条虚线款式,第20行代码设置线条区域的款式,第21行代码设置线条的透明度,第22行代码设置前风光,第23行代码设置填充背景的颜色。

运行TextEffect过程工作表中如图552所示。

图552工作表中插入艺术字

技巧3遍历工作表中的图形

工作表中的多个图形,假如使用系统缺省名称,如“文本框1〞、“文本框2〞这样前面是固定的字符串,后面是序号的,可以使用For...Next语句遍历图形,如下面的代码所示。

#001SubErgShapes_1()

#002DimiAsInteger

#003Fori=1To4

#004Sheet1.Shapes("文本框"&i).TextFrame.Characters.Text=""

#005Next

#006EndSub

代码解析:

ErgShapes_1过程去除工作表中四个图形文本框中的文字。

第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。

Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes〔index〕返回单个的Shape对象,其中index是图形的名称或索引号。

返回单个的Shape对象后使用TextFrame属性和Characters方法去除文本框中的字符,关于Shape对象的TextFrame属性和Characters方法请参阅技巧53。

假如图形的名称没有规律,可以使用ForEach...Next语句循环遍历所有图形,根据Type属性返回的图形类型进展相应的操作,如下面的代码所示。

#001SubErgShapes_2()

#002DimmyShapeAsShape

#003DimiAsInteger

#004i=1

#006IfmyShape.Type=msoTextBoxThen

#007myShape.TextFrame.Characters.Text="这是第"&i&"个文本框"

#008i=i+1

#009EndIf

#010Next

#011EndSub

代码解析:

ErgShapes_2过程在工作表中的所有图形文本框中写入文本。

第5行代码使用ForEach...Next语句循环遍历工作表中所有的图形对象。

第6行到第9行代码假如图形对象是文本框那么在文本框中写入文本。

其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,请参阅表格541。

第7行代码根据返回的Type属性值在所有的文本框内写入相应的文本,如图561所示。

图561遍历所有的文本框

技巧4挪动、旋转图片

工作表中的图片可以挪动、旋转,如下面的代码所示。

#001SubMoveShape()

#002DimiAsLong

#003DimjAsLong

#004WithSheet1.Shapes

(1)

#005Fori=1To3000Step5

#006.Top=Sin(i*(3.1416/180))*100+100

#007.Left=Cos(i*(3.1416/180))*100+100

#008.Fill.ForeColor.RGB=i*100

#009Forj=1To10

#010.IncrementRotation-2

#011DoEvents

#012Next

#013Next

#014EndWith

#015EndSub

代码解析:

MoveShape过程挪动、旋转工作表中的图片并不断改变其填充的前风光。

第6行代码设置图片的Top属性值,应用于Shape对象的Top属性设置图形的顶端到工作表顶端的间隔。

在循环的过程中使用Sin函数将Top属性值设置为一个圆形的弧度值。

Sin函数返回指定参数的正弦值,语法如下:

Sin(number)

参数number表示一个以弧度为单位的角。

Sin函数取一角度为参数值,并返回角的对边长度除以斜边长度的比值,将角度除以180后即能角度转换为弧度。

第7行代码设置图片的Left属性值,应用于Shape对象的Left属性设置图形从左边界

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1