VBA常用代码解析(第十三讲)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VBA常用代码解析(第十三讲)
055 在工作表中添加艺术字在工作表中插入艺术字,可以使用AddTextEffect方法,如下面的代码所示。Sub TextEffect() DimmyShape As Shape On ErrorResume Next Sheet1.Shapes('myShape').Delete SetmyShape =
Sheet1.Shapes.AddTextEffect _
(PresetTextEffect:=msoTextEffect15,_ Text:='我爱Excel Home',FontName:='宋体',FontSize:=36,_
FontBold:=msoFalse,FontItalic:=msoFalse,_ Left:=100,Top:=100) WithmyShape .Name = 'myShape'
With .Fill .Solid .ForeColor.SchemeColor = 55 .Transparency = 0 End With With .Line .Weight = 1.5 .DashStyle = msoLineSolid .Style = msoLineSingle .Transparency =
0 .ForeColor.SchemeColor = 12 .BackColor.RGB = RGB(255,255,255) End With EndWith SetmyShape = Nothing End Sub 代码解析:TextEffect过程在工作表中插入艺术字并设置其格式。第3、4行代码删除工作表中可能存在的艺术字,以免重复添加。第5行到第9行代码使用AddTextEffect方法在工作表中插入艺术字,AddTextEffect方法创建艺术字对象。返回一个Shape对象,该对象代表新建的艺术字对象,语法如下:expression.AddTextEffect(PresetTextEffect,Text,
FontName,FontSize,FontBold,FontItalic,Left,Top)参数expression是必需的,返回一个Shapes对象。参数PresetTextEffect是必需的,艺术字预置文本效果,可为MsoPresetTextEffect 常量之一,等同于在工作表中插入艺术字时的样式选项卡。参数Text是必需的,艺术字对象中的文字。参数FontName是必需的,艺术字对象中所用的字体名称。参数FontSize是必需的,以磅为单位给出艺术字对象中所用的字体大小。参数FontBold是必需的,在艺术字中要加粗的字体。参数FontItalic是必需的,在艺术字中要倾斜的字体。参数Left和参数Top是必需的,相对于文档的左上角、顶部,以磅为单位给出艺术字对象边框左上角的位置。第11行代码将艺术字对象重命名为“myShape”。第12行到第16行代码设置艺术字对象的填充格式。其中第13行代码将填充格式设置为均一的颜色,应用于FillFormat 对象的Solid 方法将指定的填充格式设置为均一的颜色,可用本方法将带有渐进色、纹理、图案或背景的填充格式转换为单色的填充格式。第14行代码设置填充的颜色。第15行代码设置填充的透明度。第17行到第24行代码设置艺术字对象的线条格式属性。其中第18行代码设置线条粗细,第19行代码设置线条虚线样式,第20行代码设置线条区域的样式,第21行代码设置线条的透明度,第22行代码设置前景色,第23行代码设置填充背景的颜色。▲056 遍历工作表中的图形工
作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For...Next 语句遍历图形,如下面的代码所示。Sub ErgShapes_1() Dimi As Integer Fori = 1 To 4 Sheet1.Shapes('文本框' & i).TextFrame.Characters.Text = ““Next End Sub代码解析:ErgShapes_1过程清除工作表中四个图形文本框中的文字。第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用
Shapes(index)返回单个的Shape对象,其中index是图形的名称或索引号。返回单个的Shape对象后使用TextFrame属性和Characters方法清除文本框中的字符,关于Shape对象的TextFrame 属性和Characters方法请参阅▲53 。如果图形的名称没有规律,可以使用For Each...Next 语句循环遍历所有图形,根据Type属性返回的图形类型进行相应的操作,如下面的代码所示。Sub ErgShapes_2() DimmyShape As Shape Dimi As Integer i =1 ForEach myShape In Sheet1.Shapes If myShape.Type = msoTextBox Then
myShape.TextFrame.Characters.Text ='这是第' & i & '个文本
框' i = i + 1 End If Next End Sub代码解析:ErgShapes_2过程在工作表中的所有图形文本框中写入文本。第5行代码使用For Each...Next语句循环遍历工作表中所有的图形对象。第6
行到第9行代码如果图形对象是文本框则在文本框中写入文本。其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,如表格所示。▲057 移动、旋转图片工作表中的图片可以移动、旋转,如下面的代码所示。Sub MoveShape() Dimi As Long Dimj As Long
WithSheet1.Shapes(1) For i = 1 To 3000 Step 5 .Top = Sin(i * (3.1416 / 180)) * 100+ 100 .Left = Cos(i * (3.1416 / 180)) *
100+ 100 .Fill.ForeColor.RGB = i * 100 For j = 1 To
10 .IncrementRotation -2 DoEvents Next Next EndWith End Sub代码解析:MoveShape过程移动、旋转工作表中的图片并不断改变其填充的前景色。第6行代码设置图片的Top属性值,应用于Shape对象的Top属性设置图形的顶端到工作表顶端的距离。在循环的过程中使用Sin函数将Top属性值设置为一个圆形的弧度值。Sin函数返回指定参数的正弦值,语法如下:Sin(number)参数number表示一个以弧度为单位的角。Sin函数取一角度为参数值,并返回角的对边长度除以斜边长度的比值,将角度除以180后即能角度转换为弧度。第7行代码设置图片的Left属性值,应用于Shape对象的Left属性设置图形从左边界至A 列左边界(在工作表中)或
图表区左边界(在图表工作表中)的距离。在循环的过程中使用Cos函数将Left属性值设置为一个圆形的弧度值。Cos函