工作表中所有图形,VBA代码一个也不会漏掉

大家好,我们今日继续讲解VBA代码解决方案的第119讲内容:如何遍历工作表中的图形。其实这节的内容在我前面的章节中已经讲过,今日拿出来,作为一节的专门的内容。

工作表中的多个图形,有时我们需要根据实际的需要遍历所有的图形以达到某种共同的操作,这时需要怎么做呢?可以使用For Each...Next 语句循环遍历所有图形。这时要根据图形的Type属性进行相应的操作,不知道大家是否还记得图形的Type属性呢,下面的表格中有常见的16种类型,需要的时候可以查;

1 msoShapeTypeMixed-2混合型图形

2 msoAutoShape1自选图形

3 msoCallout2没有边框线的标注

4 msoChart3图表

5 msoComment4批注

6 msoFreeform5任意多边形

7 msoGroup6图形组合

8 msoFormControl8窗体控件

9 msoLine9线条

10 msoLinkedOLEObject10链接式或内嵌OLE对象

11 msoLinkedPicture11剪贴画或图片

12 msoOLEControlObject12ActiveX 控件

13 msoPicture13图片

14 msoTextEffect15艺术字

15 msoTextBox17文本框

16 msoDiagram21组织结构图或其他图示。

我们还是以实际的问题进行分析:一个工作表中中有很多的图形,我们需要把其中的自选图形部分的文本修正为"VBA代码解决方案"。如下面截图所示。

工作表中所有图形,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

代码窗口:

工作表中所有图形,VBA代码一个也不会漏掉

代码解析:MynzShapes过程在工作表中的所有自选图形中的文本更换。

第5行代码使用For Each...Next 语句循环遍历工作表中所有的图形对象。

第6行到第9行代码如果图形对象是自选图形msoAutoShape则在写入文本"VBA代码解决方案"。其中第6行代码根据Type属性判断图形对象的属性的,应用于Shape对象的Type属性返回或设置图形类型,读者可以在代码运行时查看这个属性值。

第7行代码根据返回的Type属性值在写入相应的文本,

运行后:

工作表中所有图形,VBA代码一个也不会漏掉

今日内容回向:

1 如何判断图形的属性?

2 如何更改图形的自选文字?


分享到:


相關文章: