vba 判断文本框内容是否为空_VBA代码解决方案第119讲:如何遍历工作表中的图形…

1a8a36266c39bdb7da4bd3f9ac6105ed.png

大家好,我们今日继续讲解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代码解决方案”。如下面截图所示。

90d9b198507e7c3a5653df6b477b0de5.png

以上除了我茶壶,其余的都是自选图形,代码该怎么写呢?如下:

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

代码窗口:

9d46d2711e09ed013b80266a59504c82.png

代码解析:

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

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

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

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

运行后:

3081f3e8eb202a205bb56501e5f64f38.png

今日内容回向:

1 如何判断图形的属性?

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

《VBA代码解决方案》终于可以和大家见面了,是我将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。

538442173b2678d24bf5c58afedd2ea3.png

fcebbf5b5b2f9a6840d98ae2ed3d238f.png

9b75c83962bc13c6dc67ad7c3a75888b.png

Published by

风君子

独自遨游何稽首 揭天掀地慰生平