Excel VBA实例教程 #056:遍历工作表中的图形
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For...Next 语句遍历图形,如下面的代码所示。
1.Sub ErgShapes_1()
2. Dim i As Integer
3. For i = 1 To 4
4. Sheet1.Shapes("文本框 " & i).TextFrame.Characters.Text = ""
5. Next
6.End Sub
代码解析:
ErgShapes_1过程清除工作表中四个图形文本框中的文字。
第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。
Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes(index)返回单个的Shape对象,其中index是图形的名称或索引号。
返回单个的Shape对象后使用TextFrame 属性和Characters方法清除文本框中的字符,关于Shape对象的TextFrame 属性和Characters方法请参阅技巧53 。
如果图形的名称没有规律,可以使用For Each...Next 语句循环遍历所有图形,根据Type属性返回的图形类型进行相应的操作,如下面的代码所示。
1.Sub ErgShapes_2()
2. Dim myShape As Shape
3. Dim i As Integer
4. i = 1
5. For Each myShape In Sheet1.Shapes
6. If myShape.Type = msoTextBox Then
7. myShape.TextFrame.Characters.Text = "这是第" & i & "个文本框"
8. i = i + 1
9. End If
10. Next
11.End Sub
代码解析:
ErgShapes_2过程在工作表中的所有图形文本框中写入文本。
第5行代码使用For Each...Next 语句循环遍历工作表中所有的图形对象。
第6行到第9行代码如果图形对象是文本框则在文本框中写入文本。其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,请参阅表格54 1 。
第7行代码根据返回的Type属性值在所有的文本框内写入相应的文本,如图1所示。
图1 遍历所有的文本框