大家好,我们今日继续讲解VBA代码解决方案的第119讲内容:如何遍历工作表中的图形。其实这节的内容在我前面的章节中已经讲过,今日但拿出来,作为一节的专门的内容。
工作表中的多个图形,有时我们需要根据实际的需要遍历所有的图形一达到某种共同的操作,这时需要怎么做呢?可以使用For Each…Next 语句循环遍历所有图形。这时要根据图形的Type属性进行相应额操作,不知道大家是否还记得图形的Type属性呢,下面的表格中有常见的16种类型,需要的时候可以查到;
1 msoShapeTypeMixed -2 混合型图形
2 msoAutoShape 1 自选图形
3 msoCallout 2 没有边框线的标注
4 msoChart 3 图表
5 msoComment 4 批注
6 msoFreeform 5 任意多边形
7 msoGroup 6 图形组合
8 msoFormControl 8 窗体控件
9 msoLine 9 线条
10 msoLinkedOLEObject 10 链接式或内嵌OLE对象
11 msoLinkedPicture 11 剪贴画或图片
12 msoOLEControlObject 12 ActiveX 控件
13 msoPicture 13 图片
14 msoTextEffect 15 艺术字
15 msoTextBox 17 文本框
16 msoDiagram 21 组织结构图或其他图示
我们还是以实际的问题进行分析,一个工作表中中有很多的图形,我们需要把其中的自选图形部分的文本修正为“VBA代码解决方案”。如下面截图所示。
以上除了我茶壶,其余的都是自选图形,代码该怎么写呢?如下:
Sub MynzShapes()
Dim myShape As Shape
Dim i As Integer
i = 0
For Each myShape In Sheets("sheet2").Shapes
If myShape.Type = msoAutoShape Then
myShape.TextFrame.Characters.Text = "VBA代码解决方案"
i = i + 1
End If
Next
MsgBox ("共修改了" & i & "个文本框的文本!")
End Sub
代码窗口:
代码解析:
MynzShapes过程在工作表中的所有自选图形中的文本更换。
第5行代码使用For Each…Next 语句循环遍历工作表中所有的图形对象。
第6行到第9行代码如果图形对象是自选图形msoAutoShape则在写入文本"VBA代码解决方案"。其中第6行代码根据Type属性判断图形对象的属性的,应用于Shape对象的Type属性返回或设置图形类型,读者可以在代码运行时查看这个属性值。
第7行代码根据返回的Type属性值在写入相应的文本,
运行后:
今日内容回向:
1 如何判断图形的属性?
2 如何更改图形的自选文字?
《VBA代码解决方案》终于可以和大家见面了,是我将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。