VBA常用技巧代码解析
第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(\文本框 \#005 Next #006 End Sub
代码解析:
ErgShapes_1过程清除工作表中四个图形文本框中的文字。
第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。 Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes(index)返回单个的Shape对象,其中index是图形的名称或索引号。
11
VBA常用技巧代码解析
返回单个的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 = \这是第\个文本框\#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 遍历所有的文本框
12
VBA常用技巧代码解析
技巧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)
13
VBA常用技巧代码解析
参数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代码可以很好的完成操作。
14
VBA常用技巧代码解析
图 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(\
#008 FilPath = ThisWorkbook.Path & \& .Cells(i, 1).Text & \#009 If Dir(FilPath) <> \
#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
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Excel VBA常用技巧 第04章 shape及Chart对象(3)在线全文阅读。
相关推荐: