【问题标题】:VBA Word - iterate through all paragraphs in document in reverseVBA Word - 反向遍历文档中的所有段落
【发布时间】:2019-09-09 01:52:08
【问题描述】:

简而言之问题: 我需要以相反的顺序遍历所有段落。我目前正在使用 For Each 循环:

For Each Paragraph in ActiveDocument.Paragraphs
    ' looping code
Next

为什么我需要这样做: 我从一个错误地格式化列表元素的工具导出。我需要检查所有这些元素并将其设置为“列表”字样。

我使用段落中的各种 ListFormat 属性使这部分工作。问题是列表只是继续,当列表重新启动时它们不会保留。我最终得到的列表编号是 aaaaa。然后bbbb。等等

我打算使用 ListFormat.ListValue 属性来确定何时重新启动列表(当此值 = 1 时将重新启动),但这不起作用,因为当您将一个段落元素转换为新的“列表”类型时,以下段落也自动将 ListFormat.ListValue 重置为 1。如果我可以反向循环遍历段落,这将不再是问题。

【问题讨论】:

    标签: vba loops ms-word reverse paragraph


    【解决方案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
    

    【讨论】:

    • 看@BigBen,我没有意识到你可以用这种方式迭代段落。很惊讶它没有出现在我的搜索中。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多