VBA Word - 反向遍历文档中的所有段落
VBA Word - iterate through all paragraphs in document in reverse
简而言之问题:
我需要以相反的顺序遍历所有段落。我目前正在使用 For Each 循环:
For Each Paragraph in ActiveDocument.Paragraphs
' looping code
Next
为什么我需要这样做:
我从一个错误地格式化列表元素的工具中导出。我需要仔细检查并将所有这些元素设置为 'List' 文字样式。
我让这部分工作使用段落中的各种 ListFormat 属性。问题是列表只是继续,当列表重新启动时它们不会保留。我最终得到的列表编号是 aaaaa。然后bbbb。等等
我打算使用 ListFormat.ListValue 属性 来确定何时重新启动列表(当此值 = 1 时会重新启动),但这不起作用,因为当您将一个段落元素转换为新的 'List' 类型,以下段落也会自动将 ListFormat.ListValue 重置为 1。如果我可以反向循环段落,这将不再是一个问题。
不使用 For Each
循环,而是按索引遍历段落,您可以使用 Step -1
轻松地从最后一段循环到第一段。
Sub Test()
Dim i As Long
For i = ActiveDocument.Paragraphs.Count To 1 Step -1
ActiveDocument.Paragraphs(i).... ' do whatever you want with each paragraph
Next i
End Sub
简而言之问题: 我需要以相反的顺序遍历所有段落。我目前正在使用 For Each 循环:
For Each Paragraph in ActiveDocument.Paragraphs
' looping code
Next
为什么我需要这样做: 我从一个错误地格式化列表元素的工具中导出。我需要仔细检查并将所有这些元素设置为 'List' 文字样式。
我让这部分工作使用段落中的各种 ListFormat 属性。问题是列表只是继续,当列表重新启动时它们不会保留。我最终得到的列表编号是 aaaaa。然后bbbb。等等
我打算使用 ListFormat.ListValue 属性 来确定何时重新启动列表(当此值 = 1 时会重新启动),但这不起作用,因为当您将一个段落元素转换为新的 'List' 类型,以下段落也会自动将 ListFormat.ListValue 重置为 1。如果我可以反向循环段落,这将不再是一个问题。
不使用 For Each
循环,而是按索引遍历段落,您可以使用 Step -1
轻松地从最后一段循环到第一段。
Sub Test()
Dim i As Long
For i = ActiveDocument.Paragraphs.Count To 1 Step -1
ActiveDocument.Paragraphs(i).... ' do whatever you want with each paragraph
Next i
End Sub