欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ExcelVBA常用技巧第04章shape及Chart对象.pdf

    • 资源ID:76259265       资源大小:1.51MB        全文页数:28页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ExcelVBA常用技巧第04章shape及Chart对象.pdf

    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 在工作表中添加图形如果需要在工作表中添加图形对象,可以使用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 With.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 .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#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 行代码使用AddShape方法在工作表中添加一个矩形。当该方法应用于Shapes对象时,返回一个Shape 对象,该对象代表工作表中的新自选图形,语法如下:expression.AddShape(Type,Left,Top,Width,Height)参数 expression是必需的,返回一个Shapes 对象。VBA 常用技巧代码解析4 参数 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属性返回或设置指定对象的水平对齐方式,可为表格1-1所示的XlHAlign常量之一。常量值描述xlHAlignCenter-4108 居中xlHAlignCenterAcrossSelection 7 靠左xlHAlignDistributed-4117 分散对齐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 两端对齐xlVAlignBottom-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 行到第 32 行代码设置矩形的边框线条格式,应用于 ShapeRange集合的 Line 属性返回一个LineFormat 对象,该对象包含指定图形的线条格式属性。其中第 26 行代码设置矩形线条粗细,第 27 行代码设置矩形线条的虚线样式,第 28 行代码设置矩形填充的透明度,第29 行代码设置矩形为可见,第30 行代码设置矩形的前景色,第 31 行代码设置矩形填充背景的颜色。第 33 行到第 38 行代码设置矩形的内部填充格式,应用于ShapeRange集合的 Fill 属性返回 FillFormat对象,该对象包含指定的图表或图形的填充格式属性。其中第 35 行代码设置矩形内部的透明度,第 36 行代码设置矩形内部为可见,第 37 行代码设置矩形内部的前景色,第38 行代码将矩形内部指定填充设为单色渐变,应用于FillFormat对象的 OneColorGradient方法将指定填充设为单色渐变,语法如下:expression.OneColorGradient(Style,Variant,Degree)其中参数Style 是必需的,底纹样式,可为表格2-1 所示的MsoGradientStyle常量之一。常量值描述msoGradientDiagonalDown 4 斜下msoGradientDiagonalUp 3 斜上VBA 常用技巧代码解析6 msoGradientFromCenter 7 无msoGradientFromCorner 5 角部幅射msoGradientFromTitle 6 中心幅射msoGradientHorizontal 1 水平msoGradientMixed-2 无msoGradientVertical 2 垂直表格1-4 MsoGradientStyle常量参数 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过程结果如图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.Shapes#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 工作表的所有图片以文件形式导出到同一目录中。第 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 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 方法在工作表中添加一个图表,应用于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 方法删除。VBA 常用技巧代码解析9 技巧3 在工作表中添加艺术字在工作表中插入艺术字,可以使用AddTextEffect方法,如下面的代码所示。#001 Sub TextEffect()#002 Dim myShape As Shape#003 On Error Resume Next#004 Sheet1.Shapes(myShape).Delete#005 Set 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 .Transparency=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 过程在工作表中插入艺术字并设置其格式。第 3、4 行代码删除工作表中可能存在的艺术字,以免重复添加。第 5 行到第9 行代码使用AddT extEffect方法在工作表中插入艺术字,AddTextEffect方法创建艺术字对象。返回一个Shape 对象,该对象代表新建的艺术字对象,语法如下:expression.AddTextEffect(PresetTextEffect,Text,FontName,FontSize,FontBold,FontItalic,Left,Top)参数 expression是必需的,返回一个Shapes 对象。参数 PresetTextEffect是必需的,艺术字预置文本效果,可为MsoPresetT extEffect 常量之一,等同于在工作表中插入艺术字时的样式选项卡,如图3-1 所示。图 3-1 艺术字样式参数 Text 是必需的,艺术字对象中的文字。参数 FontName是必需的,艺术字对象中所用的字体名称。参数 FontSize是必需的,以磅为单位给出艺术字对象中所用的字体大小。参数 FontBold 是必需的,在艺术字中要加粗的字体。参数 FontItalic是必需的,在艺术字中要倾斜的字体。参数 Left 和参数 Top 是必需的,相对于文档的左上角、顶部,以磅为单位给出艺术字对象边框左上角的位置。第 11 行代码将艺术字对象重命名为“myShape”。第 12 行到第 16 行代码设置艺术字对象的填充格式。其中第 13 行代码将填充格式设置为均一的颜色,应用于FillFormat 对象的 Solid 方法将指定的填充格式设置为均一的颜色,可用本方法将带有渐进色、纹理、图案或背景的填充格式转换为单色的填充格式。第14 行代码设置填充的颜色。第15 行代码设置填充的透明度。VBA 常用技巧代码解析11 第 17 行到第 24 行代码设置艺术字对象的线条格式属性。其中第 18 行代码设置线条粗细,第 19 行代码设置线条虚线样式,第20 行代码设置线条区域的样式,第21 行代码设置线条的透明度,第22 行代码设置前景色,第23 行代码设置填充背景的颜色。运行 TextEffect 过程工作表中如图3-2 所示。图 3-2 工作表中插入艺术字技巧4 遍历工作表中的图形工作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For.Next 语句遍历图形,如下面的代码所示。#001 Sub ErgShapes_1()#002 Dim i As Integer#003 For i=1 To 4#004 Sheet1.Shapes(文本框&i).TextFrame.Characters.Text=#005 Next#006 End Sub 代码解析:ErgShapes_1过程清除工作表中四个图形文本框中的文字。第 3 行到第 5 行代码,使用Shapes 属性在工作表上的三个图形文本框中循环。Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes(index)返回单个的Shape 对象,其中index 是图形的名称或索引号。VBA 常用技巧代码解析12 返回单个的Shape 对象后使用TextFrame 属性和 Characters方法清除文本框中的字符,关于Shape 对象的 TextFrame 属性和 Characters方法请参阅技巧1。如果图形的名称没有规律,可以使用For Each.Next 语句循环遍历所有图形,根据Type 属性返回的图形类型进行相应的操作,如下面的代码所示。#001 Sub ErgShapes_2()#002 Dim myShape As Shape#003 Dim i As Integer#004 i=1#005 For Each myShape In Sheet1.Shapes#006 If myShape.Type=msoTextBox Then#007 myShape.TextFrame.Characters.Text=这是第&i&个文本框#008 i=i+1#009 End If#010 Next#011 End Sub 代码解析:ErgShapes_2过程在工作表中的所有图形文本框中写入文本。第 5 行代码使用For Each.Next 语句循环遍历工作表中所有的图形对象。第 6 行到第9 行代码如果图形对象是文本框则在文本框中写入文本。其中第6 行代码根据 Type 属性判断图形对象是否为文本框,应用于 Shape 对象的 Type 属性返回或设置图形类型,MsoShapeType类型,请参阅表格2-1。第 7 行代码根据返回的Type 属性值在所有的文本框内写入相应的文本,如图4-1 所示。图 4-1 遍历所有的文本框VBA 常用技巧代码解析13 技巧5 移动、旋转图片工作表中的图片可以移动、旋转,如下面的代码所示。#001 Sub MoveShape()#002 Dim i As Long#003 Dim j As Long#004 With Sheet1.Shapes(1)#005 For i=1 To 3000 Step 5#006 .Top=Sin(i*(3.1416/180)*100+100#007 .Left=Cos(i*(3.1416/180)*100+100#008 .Fill.ForeColor.RGB=i*100#009 For j=1 To 10#010 .IncrementRotation-2#011 DoEvents#012 Next#013 Next#014 End With#015 End Sub 代码解析:MoveShape过程移动、旋转工作表中的图片并不断改变其填充的前景色。第 6 行代码设置图片的Top 属性值,应用于Shape 对象的 Top 属性设置图形的顶端到工作表顶端的距离。在循环的过程中使用Sin 函数将 Top 属性值设置为一个圆形的弧度值。Sin 函数返回指定参数的正弦值,语法如下:Sin(number)参数 number 表示一个以弧度为单位的角。Sin 函数取一角度为参数值,并返回角的对边长度除以斜边长度的比值,将角度除以180后即能角度转换为弧度。第 7 行代码设置图片的Left 属性值,应用于 Shape 对象的 Left 属性设置图形从左边界至 A 列左边界(在工作表中)或图表区左边界(在图表工作表中)的距离。在循环的过程中使用 Cos 函数将 Left 属性值设置为一个圆形的弧度值。Cos 函数返回指定一个角的余弦值,语法如下:Cos(number)VBA 常用技巧代码解析14 参数 number 表示一个以弧度为单位的角。Cos 函数的 number 参数为一个角,并返回直角三角形两边的比值,该比值为角的邻边长度除以斜边长度之商,将角度除以180 后即能角度转换为弧度。第 8 行代码设置图片填充的前景色随着循环的过程不断的变化。使用 Fill 属性返回一个FillFormat对象,FillFormat对象代表图形的填充格式,其ForeColor 属性设置对象填充的前景色。第 9 行到第 11 行代码在图形移动的过程中使用IncrementRotation方法设置图形绕z 轴的转角,IncrementRotation方法以指定的度数为增量,更改指定的图形绕z 轴的转角,语法如下:expression.IncrementRotation(Increment)参数 expression是必需的,返回一个Shape 对象。参数 Increment是必需的,以度为单位指定图形在水平方向的旋转量,正值使图形按顺时针方向旋转,负值使图形按逆时针方向旋转。其中第 11 行是关键的代码,使用DoEvents函数转让控制权,否则达不到预计的视觉效果。运行 MoveShape过程,工作表的图形在自身进行逆时针方向旋转的同时沿着一个圆形的弧度进行移动,并不断改变其填充的颜色。技巧6 工作表中自动插入图片在日常工作中经常需要在工作表中插入大量图片,比如在如图6-1所示的工作表中需要根据 A 列的名称在C 列插入保存在同一目录中的相应的图片,如果使用手工插入不仅非常繁琐且极易出错,而使用VBA 代码可以很好的完成操作。VBA 常用技巧代码解析15 图 6-1 需插入图片的工作表示例代码如下:#001 Sub insertPic()#002 Dim i As Integer#003 Dim FilPath As String#004 Dim rng As Range#005 Dim s As String#006 With Sheet1#007 For i=3 To.Range(a65536).End(xlUp).Row#008 FilPath=ThisWorkbook.Path&.Cells(i,1).Text&.jpg#009 If Dir(FilPath)Then#010 .Pictures.Insert(FilPath).Select#011 Set rng=.Cells(i,3)#012 With Selection#013 .Top=rng.Top+1#014 .Left=rng.Left+1#015 .Width=rng.Width-1#016 .Height=rng.Height-1#017 End With#018 Else#019 s=s&Chr(10)&.Cells(i,1).Text#020 End If#021 Next VBA 常用技巧代码解析16#022 .Cells(3,1).Select#023 End With#024 If s Then#025 MsgBox s&Chr(10)&没有照片!#026 End If#027 End Sub 代码解析:insertPic 过程使用Insert 方法在工作表中插入图片。第 7 行代码开始For.Next 循环,循环的终值由工作表中A 列单元格的行数所决定。第 8 行代码字符串变量FilPath保存 A 列名称单元格所对应的图片文件的路径和文件名,本例中图片文件的文件名应和A 列中的名称一致。第 9 行到第 11 行代码使用Dir 函数在同一文件夹中查找与A 列单元格中的名称相对应的图片文件,如果对应的图片文件存在则使用Insert 方法将图片插入到工作表中,并将C列的单元格赋给变量rng。Dir 函数返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。如果已没有合乎条件的文件,则Dir 函数会返回一个零长度字符串()。第 12 行到第17 行代码,当图片片插入到工作表时其实是插入到活动单元格的,此时需设置图片的Top 属性和 Left 属性将图片移动到C 列所对应的单元格中,并设置其Width属性和 Height 属性使其适应所在单元格的大小。第 18、19 行代码如果在同一文件夹中没有与A 列单元格对应的图片文件,则使用字符串变量 s 保存没有图片文件的名称。第 24 行到第 26 行代码如果字符串变量s 不等于空白说明文件夹中缺少图片文件,使用消息框提示。运行 insertPic过程工作表如图6-2 所示。VBA 常用技巧代码解析17 图 6-2 插入图片后的工作表如果文件夹中缺少对应的图片文件,则会进行提示,如图6-3 所示。图 6-3 缺少图片文件提示技巧7 固定工作表中图形的位置VBA 常用技巧代码解析18 工作表中插入的图片,一般都是固定的尺寸和固定的单元格区域中的,但在实际使用中可能因一些人为的因素导致图片位置偏移或尺寸变化,此时可以使用VBA 代码进行调整,如下面的代码所示。#001 Sub ShapeAddress()#002 Dim rng As Range#003 Set rng=Sheet1.Range(B4:E22)#004 With Sheet1.Shapes(Picture 1)#005 .Rotation=0#006 .Select#007 With Selection#008 .Top=rng(1).Top+1#009 .Left=rng(1).Left+1#010 .Width=rng.Width-0.5#011 .Height=rng.Height-0.5#012 End With#013 End With#014 Range(A1).Select#015 End Sub 代码解析:ShapeAddress过程调整指定图形在工作表中的位置。第 3 行代码变量rng 保存工作表中插入图片的单元格区域。第 5 行代码设置图片的转角,应用于Shape 对象 Rotation属性以度为单位返回或设置图形的转角,设置为正值向右偏转,设置为负值向左偏转,设置为零图片则保持90 度垂直。第 7 行到第 12 行代码设置图片的Top 属性和 Left 属性将图片移动到变量rng 所保存的单元格区域中,并设置其Width 属性和 Height 属性使其适应所在单元格区域的大小。第 14 行代码选择A1 单元格,不然图片会处于选中状态。经过以上设置,工作表中的图片“Picture 1”不管处于什么状态都可以一键恢复其原来的大小、位置。VBA 常用技巧代码解析19 技巧8 使用 VBA 自动生成图表在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用 VBA 代码可以在工作表中自动生成图表,如下面的示例代码。#001 Sub ChartAdd()#002 Dim myRange As Range#003 Dim myChart As ChartObject#004 Dim R As Integer#005 With Sheet1#006 .ChartObjects.Delete#007 R=.Range(A65536).End(xlUp).Row#008 Set myRange=.Range(A&1&:B&R)#009 Set myChart=.ChartObjects.Add(120,40,400,250)#010 With myChart.Chart#011 .ChartType=xlColumnClustered#012 .SetSourceData Source:=myRange,PlotBy:=xlColumns#013 .ApplyDataLabels ShowValue:=True#014 .HasTitle=True#015 .ChartTitle.Text=图表制作示例#016 With.ChartTitle.Font#017 .Size=20#018 .ColorIndex=3#019 .Name=华文新魏#020 End With#021 With.ChartArea.Interior#022 .ColorIndex=8#023 .PatternColorIndex=1#024 .Pattern=xlSolid#025 End With#026 With.PlotArea.Interior#027 .ColorIndex=35#028 .PatternColorIndex=1 VBA 常用技巧代码解析20#029 .Pattern=xlSolid#030 End With#031 .SeriesCollection(1).DataLabels.Delete#032 With.SeriesCollection(2).DataLabels.Font#033 .Size=10#034 .ColorIndex=5#035 End With#036 End With#037 End With#038 Set myRange=Nothing#039 Set myChart=Nothing#040 End Sub 代码解析:ChartAdd 过程在工作表中自动生成图表,图表类型为簇状柱形图。第 6 行代码使用Delete 方法删除工作表中已经存在的图表,而 ChartObjects方法返回代表工作表中单个嵌入图表(ChartObject对象)或所有嵌入图表的集合(ChartObjects对象)的对象,语法如下:expression.ChartObjects(Index)其中参数 Index 是可选的,指定图表的名称或号码。该参数可以是数组,用于指定多个图表,因为示例中只有一个图表,所以无需指定其Index 参数。第 8 行代码指定图表的数据源。第 9 行代码使用Add 方法创建一个新图表,应用于 ChartObjects对象的 Add 方法创建新的嵌入图表,语法如下:expression.Add(Left,Top,Width,Height)参数 Left、Top 是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1 的左上角或图表的左上角的坐标。参数 Width、Height 是必需,以磅为单位给出新对象的初始大小。第 10 行代码使用Chart 属性返回新创建的图表,应用于ChartObject对象的 Chart 属性返回一个Chart 对象,该对象代表指定对象所包含的图表。第 11 行代码指定新创建图表的图表类型,应用于Chart 对象的 ChartType 属性返回或设置图表的类型,可以为XlChartType常量之一,具体请参阅VBA 帮助。本例中设置为xlColumnClustered即图表类型为簇状柱形图。第 12 行代码指定图表的数据源和绘图方式,应用于 Chart 对象的 SetSourceData方法VBA 常用技巧代码解析21 为指定图表设置源数据区域,语法如下:expression.SetSourceData(Source,PlotBy)参数 expression是必需的,该表达式返回一个Chart 对象。参数 Source 是可选的,源数据的区域。参数 PlotBy 是可选的,指定数据绘制方式,可为 xlColumns(系列产生在列)或 xlRows(系列产生在行)。第 13 行代码使用ApplyDataLabels方法使图表显示数据标签和数据点的值,应用于Chart 对象的 ApplyDataLabels方法将数据标签应用于图表中的某一数据点、某一数据系列或所有数据系列,语法如下:expression.ApplyDataLabels(Type,LegendKey,AutoText,HasLeaderLines,ShowSeriesName,ShowCategoryName,ShowValue,ShowPercentage,ShowBubbleSize,Separator)参数 ex

    注意事项

    本文(ExcelVBA常用技巧第04章shape及Chart对象.pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开