加载中…
个人资料
excelvba520
excelvba520
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,389
  • 关注人气:22
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

excel VBA添加图形对象,使用AddShape方法

(2012-09-15 07:57:03)
标签:

excel

vba

对象

addshape

图形对象

杂谈

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

1.  Sub AddShape()

2.      Dim myShape As Shape

3.      On Error Resume Next

4.      Sheet1.Shapes("myShape").Delete

5.      Set myShape = Sheet1.Shapes.AddShape(msoShapeRectangle, 40, 120, 280, 30)

6.      With myShape

7.          .Name = "myShape"

8.          With .TextFrame.Characters

9.              .Text = "单击将选择Sheet2!"

10.            With .Font

11.                .Name = "华文行楷"

12.                .FontStyle = "常规"

13.                .Size = 22

14.                .ColorIndex = 7

15.            End With

16.        End With

17.        With .TextFrame    

18.            .HorizontalAlignment = -4108

19.            .VerticalAlignment = -4108

20.        End With

21.        .Placement = 3

22.    End With

23.    myShape.Select

24.    With Selection.ShapeRange

25.        With .Line

26.            .Weight = 1

27.            .DashStyle = msoLineSolid

28.            .Style = msoLineSingle

29.            .Transparency = 0

30.            .Visible = msoTrue

31.            .ForeColor.SchemeColor = 40

32.            .BackColor.RGB = RGB(255, 255, 255)

33.        End With

34.        With .Fill

35.            .Transparency = 0

36.            .Visible = msoTrue

37.            .ForeColor.SchemeColor = 41

38.            .OneColorGradient 1, 4, 0.23

39.        End With

40.    End With

41.    Sheet1.Range("A1").Select

42.    Sheet1.Hyperlinks.Add Anchor:=myShape, Address:="", _

43.        SubAddress:="Sheet2!A1", ScreenTip:="选择Sheet2!"

44.    Set myShape = Nothing

45.End Sub

代码解析:
AddShape
过程在作表中添加一个矩形并设置其外观等属性。
2行代码声明变量myShape的对象类型。
34行代码删除可能存在的名称为“myShape”的图形对象。
5行代码使用AddShape方法在工作表中添加一个矩形。当该方法应用于Shapes对象时,返回一个Shape对象,该对象代表工作表中的新自选图形,语法如下:
expression.AddShape(Type, Left, Top, Width, Height)
参数expression是必需的,返回一个Shapes对象。
参数Type是必需的,指定要创建的自选图形的类型。
参数LeftTop是必需的,以磅为单位给出自选图形边框左上角的位置。
参数WidthHeight是必需的,以磅为单位给出自选图形边框的宽度和高度。
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所示的XlHAlign常量之一。

常量

描述

xlHAlignCenter

-4108

居中

xlHAlignCenterAcrossSelection

7

靠左

xlHAlignDistributed

-4117

分散对齐

xlHAlignFill

5

分散对齐

xlHAlignGeneral

1

靠左

xlHAlignJustify

-4130

两端对齐

xlHAlignLeft

-4131

靠左

xlHAlignRight

-4152

靠右


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

常量

描述

xlVAlignCenter

-4108

居中

xlVAlignJustify

-4130

两端对齐

xlVAlignBottom

-4107

靠下

xlVAlignDistributed

-4117

分散对齐

xlVAlignTop

-4160

靠上


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

常量

描述

xlFreeFloating

3

大小、位置均固定

xlMove

2

大小固定、位置随元格而

xlMoveAndSize

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是必需的,底纹样式,可为表格 1所示的MsoGradientStyle常量之一。

常量

描述

msoGradientDiagonalDown

4

斜下

msoGradientDiagonalUp

3

斜上

msoGradientFromCenter

7

msoGradientFromCorner

5

角部幅射

msoGradientFromTitle

6

中心幅射

msoGradientHorizontal

1

水平

msoGradientMixed

-2

msoGradientVertical

2

垂直


表格 4 MsoGradientStyle常量
参数Variant是必需的,渐变变量。取值范围为 1 4 之间,分别与填充效果对话框中渐变选项卡的四个渐变变量相对应。如果GradientStyle 设为 msoGradientFromCenter,则Variant参数只能设为 1 2
参数Degree是必需的,灰度。取值范围为 0.0(表示最深)到 1.0(表示最浅)之间。
4243行代码为矩形对象添加超链接,应用于Hyperlinks对象的Add方法向指定的区域或图形添加超链接,语法如下:
expression.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
参数expression是必需的,返回一个Hyperlinks对象。
参数Anchor是必需的,超链接的位置。可为Range对象或Shape对象。
参数Address是必需的,超链接的地址。
参数SubAddress是必需的,超链接的子地址。
参数ScreenTip是可选的,当鼠标指针停留在超链接上时所显示的屏幕提示。
参数TextToDisplay是可选的,要显示的超链接的文本。
运行AddShape过程结果如图 1所示。

 
53 1        在工作表中添加图形

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有