遍历集合

有多种不同的方法可在集合中的所有元素间循环。 但是,集合上推荐的循环方法是使用 For Each...Next 循环。 在该结构中,Visual Basic 对集合中的每个对象重复同一组语句。 下面的示例显示 Documents 集合中每个文档的名称。

Sub LoopThroughOpenDocuments() 
 Dim docOpen As Document 
 
 For Each docOpen In Documents 
 MsgBox docOpen.Name 
 Next docOpen 
End Sub

可以不用消息框显示每个元素的名称,而使用数组存储这些信息。 该示例使用数组存储活动文档中包含的所有书签的名称。

Sub LoopThroughBookmarks() 
 Dim bkMark As Bookmark 
 Dim strMarks() As String 
 Dim intCount As Integer 
 
 If ActiveDocument.Bookmarks.Count > 0 Then 
 ReDim strMarks(ActiveDocument.Bookmarks.Count - 1) 
 intCount = 0 
 For Each bkMark In ActiveDocument.Bookmarks 
 strMarks(intCount) = bkMark.Name 
 intCount = intCount + 1 
 Next bkMark 
 End If 
End Sub

可遍历集合,以便有条件地对集合成员执行某项任务。 例如,下面的代码更新活动文档中的 DATE 域。

Sub UpdateDateFields() 
 Dim fldDate As Field 
 
 For Each fldDate In ActiveDocument.Fields 
 If InStr(1, fldDate.Code, "Date", 1) Then fldDate.Update 
 Next fldDate 
End Sub

可以遍历一个集合来确定某元素是否存在。 例如,如果名为“Filename”的自动图文集条目是 AutoTextEntries 集合的一部分,则以下代码将显示一条消息。

Sub FindAutoTextEntry() 
 Dim atxtEntry As AutoTextEntry 
 
 For Each atxtEntry In ActiveDocument.AttachedTemplate.AutoTextEntries 
 If atxtEntry.Name = "Filename" Then _ 
 MsgBox "The Filename AutoText entry exists." 
 Next atxtEntry 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。