ExcelVBA常用技巧第04章shape及Chart对象.pdf
《ExcelVBA常用技巧第04章shape及Chart对象.pdf》由会员分享,可在线阅读,更多相关《ExcelVBA常用技巧第04章shape及Chart对象.pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VBA 常用技巧代码解析1 VBA常用技巧目录VBA常用技巧 .1第 4 章Shape(图形)、Chart(图表)对象.2技巧 1在工作表中添加图形.2技巧 2导出工作表中的图片.7技巧 3在工作表中添加艺术字.9技巧 4遍历工作表中的图形.11技巧 5移动、旋转图片.13技巧 6工作表中自动插入图片.14技巧 7固定工作表中图形的位置.17技巧 8使用 VBA 自动生成图表.19技巧 9使用独立窗口显示图表.23技巧 10导出工作表中的图表.24技巧 11多图表制作.25VBA 常用技巧代码解析2 第4章Shape(图形)、Chart(图表)对象技巧1 在工作表中添加图形如果需要在工作表中添
2、加图形对象,可以使用AddShape方法,如下面的代码所示。#001 Sub AddShape()#002 Dim myShape As Shape#003 On Error Resume Next#004 Sheet1.Shapes(myShape).Delete#005 Set myShape=Sheet1.Shapes.AddShape(msoShapeRectangle,40,120,280,30)#006 With myShape#007 .Name=myShape#008 With.TextFrame.Characters#009 .Text=单击将选择Sheet2!#010 Wi
3、th.Font#011 .Name=华文行楷#012 .FontStyle=常规#013 .Size=22#014 .ColorIndex=7#015 End With#016 End With#017 With.TextFrame#018 .HorizontalAlignment=-4108#019 .VerticalAlignment=-4108#020 End With#021 .Placement=3 VBA 常用技巧代码解析3#022 End With#023 myShape.Select#024 With Selection.ShapeRange#025 With.Line#026
4、 .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)#033 End With#034 With.Fill#035 .Transparency=0#036 .Visible=msoTrue#037 .ForeColor.SchemeColor=41#038 .OneColorGradient 1,4,0.23#
5、039 End With#040 End With#041 Sheet1.Range(A1).Select#042 Sheet1.Hyperlinks.Add Anchor:=myShape,Address:=,_#043 SubAddress:=Sheet2!A1,ScreenTip:=选择 Sheet2!#044 Set myShape=Nothing#045 End Sub 代码解析:AddShape 过程在工作表中添加一个矩形并设置其外观等属性。第 2 行代码声明变量myShape的对象类型。第 3、4 行代码删除可能存在的名称为“myShape”的图形对象。第 5 行代码使用AddS
6、hape方法在工作表中添加一个矩形。当该方法应用于Shapes对象时,返回一个Shape 对象,该对象代表工作表中的新自选图形,语法如下:expression.AddShape(Type,Left,Top,Width,Height)参数 expression是必需的,返回一个Shapes 对象。VBA 常用技巧代码解析4 参数 Type 是必需的,指定要创建的自选图形的类型。参数 Left 和 Top 是必需的,以磅为单位给出自选图形边框左上角的位置。参数 Width 和 Height 是必需的,以磅为单位给出自选图形边框的宽度和高度。第 7 行代码将新建图形命名为“myShape”,向 Sh
7、apes 集合添加新的图形时,将对新添加的图形赋以默认的名称,若要为图形指定更有意义的名称,可指定其Name 属性。第 8 行到第 16 行代码为矩形添加文字,并设定其格式。其中第 8 行代码使用TextFrame 属性和 Characters方法返回该矩形的字符区域。应用于 Shape 对象的 TextFrame 属性返回一个TextFrame对象,该对象包含指定图形对象的对齐和定位属性;Characters方法返回一个Characters对象,该对象代表某个图形的文本框中的字符区域,语法如下:expression.Characters(Start,Length)参数 expression是
8、必需的,返回一个指定文本框内Characters对象的表达式。参数 Start 是可选的,表示将要返回的第一个字符,如果此参数设置为1 或被忽略,则 Characters方法会返回以第一个字符为起始字符的字符区域。参数 Length 是可选的,表示要返回的字符个数。如果此参数被忽略,则 Characters方法会返回该字符串的剩余部分(由Start 参数指定的字符以后的所有字符)。第 9 行代码为矩形添加文字,应用于 Characters对象的 Text 属性返回或设置对象的文本,为可读写的String 类型。第 10 行到第 15 行代码设置矩形中文字的属性,应用于Characters对象
9、Font 属性返回一个 Font 对象,该对象代表指定对象的字体属性(字体名称、字体大小、字体颜色等),第 11 行代码设置字体名称,第 12 行代码设置字体样式,第 13 行代码设置字体大小,第 14行代码颜色。第 17 行到第20 行代码设定矩形中文字的对齐方式。应用于TextFrame对象的HorizontalAlignment属性返回或设置指定对象的水平对齐方式,可为表格1-1所示的XlHAlign常量之一。常量值描述xlHAlignCenter-4108 居中xlHAlignCenterAcrossSelection 7 靠左xlHAlignDistributed-4117 分散对齐
10、xlHAlignFill 5 分散对齐xlHAlignGeneral 1 靠左xlHAlignJustify-4130 两端对齐xlHAlignLeft-4131 靠左xlHAlignRight-4152 靠右表格 1-1 HorizontalAlignment属性的 XlHAlign常量VBA 常用技巧代码解析5 应用于 TextFrame 对象的 VerticalAlignment属性返回或设置指定对象的垂直对齐方式,可为表格1-2 所示的 XlHAlign常量之一。常量值描述xlVAlignCenter-4108 居中xlVAlignJustify-4130 两端对齐xlVAlignBo
11、ttom-4107 靠下xlVAlignDistributed-4117 分散对齐xlVAlignTop-4160 靠上表格1-2 VerticalAlignment属性的 XlHAlign常量第 21 行代码设置矩形大小和位置不随单元格而变,应用于Shape 对象的Placement属性返回或设置对象与所在的单元格之间的附属关系,可为表格1-3 所示的XlPlacement常量之一。常量值描述xlFreeFloating 3 大小、位置均固定xlMove 2 大小固定、位置随单元格而变xlMoveAndSize 1 大小、位置随单元格而变表格1-3 XlPlacement常量第 24 行到第
12、 32 行代码设置矩形的边框线条格式,应用于 ShapeRange集合的 Line 属性返回一个LineFormat 对象,该对象包含指定图形的线条格式属性。其中第 26 行代码设置矩形线条粗细,第 27 行代码设置矩形线条的虚线样式,第 28 行代码设置矩形填充的透明度,第29 行代码设置矩形为可见,第30 行代码设置矩形的前景色,第 31 行代码设置矩形填充背景的颜色。第 33 行到第 38 行代码设置矩形的内部填充格式,应用于ShapeRange集合的 Fill 属性返回 FillFormat对象,该对象包含指定的图表或图形的填充格式属性。其中第 35 行代码设置矩形内部的透明度,第 3
13、6 行代码设置矩形内部为可见,第 37 行代码设置矩形内部的前景色,第38 行代码将矩形内部指定填充设为单色渐变,应用于FillFormat对象的 OneColorGradient方法将指定填充设为单色渐变,语法如下:expression.OneColorGradient(Style,Variant,Degree)其中参数Style 是必需的,底纹样式,可为表格2-1 所示的MsoGradientStyle常量之一。常量值描述msoGradientDiagonalDown 4 斜下msoGradientDiagonalUp 3 斜上VBA 常用技巧代码解析6 msoGradientFromCe
14、nter 7 无msoGradientFromCorner 5 角部幅射msoGradientFromTitle 6 中心幅射msoGradientHorizontal 1 水平msoGradientMixed-2 无msoGradientVertical 2 垂直表格1-4 MsoGradientStyle常量参数 Variant 是必需的,渐变变量。取值范围为1 到 4 之间,分别与“填充效果”对话框 中“渐 变”选 项 卡 的 四 个 渐 变 变 量 相 对 应。如 果GradientStyle 设 为msoGradientFromCenter,则 Variant 参数只能设为1 或 2
15、。参数 Degree 是必需的,灰度。取值范围为0.0(表示最深)到1.0(表示最浅)之间。第 42、43 行代码为矩形对象添加超链接,应用于Hyperlinks对象的 Add 方法向指定的区域或图形添加超链接,语法如下:expression.Add(Anchor,Address,SubAddress,ScreenTip,TextToDisplay)参数 expression是必需的,返回一个Hyperlinks对象。参数 Anchor 是必需的,超链接的位置。可为Range 对象或 Shape 对象。参数 Address 是必需的,超链接的地址。参数 SubAddress是必需的,超链接的子
16、地址。参数 ScreenTip是可选的,当鼠标指针停留在超链接上时所显示的屏幕提示。参数 TextToDisplay是可选的,要显示的超链接的文本。运行 AddShape过程结果如图1-1 所示。图 1-1 在工作表中添加图形VBA 常用技巧代码解析7 技巧2 导出工作表中的图片有时需要将工作表中的图形对象保存为单独的图像文件,可以使用Export 方法将工作表中的图片以文件形式导出,如下面的代码所示。#001 Sub ExportShp()#002 Dim Shp As Shape#003 Dim FileName As String#004 For Each Shp In Sheet1.S
17、hapes#005 If Shp.Type=msoPicture Then#006 FileName=ThisWorkbook.Path&Shp.Name&.gif#007 Shp.Copy#008 With Sheet1.ChartObjects.Add(0,0,Shp.Width+28,Shp.Height+30).Chart#009 .Paste#010 .Export FileName,gif#011 .Parent.Delete#012 End With#013 End If#014 Next#015 End Sub 代码解析:ExportShp 过程将 Sheet1 工作表的所有图
18、片以文件形式导出到同一目录中。第 4 行代码使用For Each.Next 语句遍历Sheet1 工作表中的所有图形。第 5 行代码判断图形的类型是否为图片,应用于Shape 对象的 Type 属性返回或设置图形类型,可以为表格2-1 所示的 MsoShapeType常量之一。常量值说明msoShapeTypeMixed-2 混合型图形msoAutoShape 1 自选图形msoCallout 2 没有边框线的标注msoChart 3 图表msoComment 4 批注msoFreeform 5 任意多边形VBA 常用技巧代码解析8 msoGroup 6 图形组合msoFormControl
19、8 窗体控件msoLine 9 线条msoLinkedOLEObject 10 链接式或内嵌OLE 对象msoLinkedPicture 11 剪贴画或图片msoOLEControlObject 12 ActiveX 控件msoPicture 13 图片msoTextEffect 15 艺术字msoTextBox 17 文本框msoDiagram 21 组织结构图或其他图示表格 2-1 MsoShapeType常量第 6 行代码使用字符串变量FileName 记录需导出图形的路径和名称。第 7 行代码复制图形,应用于Shape 对象的 Copy 方法将对象复制到剪贴板。第 8 行代码使用Add
20、 方法在工作表中添加一个图表,应用于ChartObjects对象的 Add 方法创建新的嵌入图表,语法如下:expression.Add(Left,Top,Width,Height)参数 expression是必需的,返回一个ChartObjects对象。参数 Left、参数 Top 是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1 的左上角或图表的左上角的坐标。参数 Width、参数 Height 是必需的,以磅为单位给出新对象的初始大小。第 9 行代码使用Paste 方法将图形粘贴到新的嵌入图表中,应用于 Chart 对象的 Paste方法将剪贴板中的图表数据粘贴
21、到指定的图表中,语法如下:expression.Paste(Type)参数 expression是必需的,返回一个Chart 对象。参数 Type 是可选的的,如果剪贴板中有图表,本参数指定要粘贴的图表信息。可为以下 XlPasteType常量之一:xlFormats、xlFormulas或 xlAll。默认值为xlAll,如果剪贴板中是数据不是图表,则不能使用本参数。第 10 行代码使用Export 方法将图表导出到同一目录中,应用于Chart 对象的 Export方法以图形格式导出图表,语法如下:expression.Export(Filename,FilterName,Interacti
22、ve)其中参数 Filename是必需的,被导出的文件的名称。第 10 行代码删除新建的图表。因为 Chart 对象是不能使用Delete 方法直接删除的,应先使用 Parent 属性返回指定对象的父对象,然后使用Delete 方法删除。VBA 常用技巧代码解析9 技巧3 在工作表中添加艺术字在工作表中插入艺术字,可以使用AddTextEffect方法,如下面的代码所示。#001 Sub TextEffect()#002 Dim myShape As Shape#003 On Error Resume Next#004 Sheet1.Shapes(myShape).Delete#005 Set
23、 myShape=Sheet1.Shapes.AddTextEffect _#006 (PresetTextEffect:=msoTextEffect15,_#007 Text:=我爱 Excel Home,FontName:=宋体,FontSize:=36,_#008 FontBold:=msoFalse,FontItalic:=msoFalse,_#009 Left:=100,Top:=100)#010 With myShape#011 .Name=myShape#012 With.Fill#013 .Solid#014 .ForeColor.SchemeColor=55#015 .Tra
24、nsparency=0#016 End With#017 With.Line#018 .Weight=1.5#019 .DashStyle=msoLineSolid#020 .Style=msoLineSingle#021 .Transparency=0#022 .ForeColor.SchemeColor=12#023 .BackColor.RGB=RGB(255,255,255)#024 End With#025 End With#026 Set myShape=Nothing#027 End Sub 代码解析:VBA 常用技巧代码解析10 TextEffect 过程在工作表中插入艺术字并
25、设置其格式。第 3、4 行代码删除工作表中可能存在的艺术字,以免重复添加。第 5 行到第9 行代码使用AddT extEffect方法在工作表中插入艺术字,AddTextEffect方法创建艺术字对象。返回一个Shape 对象,该对象代表新建的艺术字对象,语法如下:expression.AddTextEffect(PresetTextEffect,Text,FontName,FontSize,FontBold,FontItalic,Left,Top)参数 expression是必需的,返回一个Shapes 对象。参数 PresetTextEffect是必需的,艺术字预置文本效果,可为MsoPr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ExcelVBA 常用 技巧 04 shape Chart 对象
限制150内