写入和循环风格

时间:2018-01-17 20:02:40

标签: vba word-vba

假设我有以下代码将数组中的标题写入word文档并应用已定义的样式:

With wdDoc
    Set wrdRange = .Range(0, 0)                     ' Set initial Range.
    i = 2
    Do Until i > 6
       ' Debug.Print wrdRange.Start, wrdRange.End
        wrdRange.text = totalArray(i, colIndex(3)) & Chr(11)
        Set wrdRange = .Paragraphs(i - 1).Range
        wrdRange.Style = totalArray(i, colIndex(2))
        wrdRange.Collapse 0
        i = i + 1
    Loop
End With

可以预期会发生以下情况:

  1. 当我浏览文档时,单词范围以编程方式移动。
  2. 为新范围(由set语句定义)
  3. 更新单词样式
  4. 范围折叠到最后(0 = wdCollapseEnd)并且循环继续直到满足初始条件。
  5. 我似乎无法修复的是应用于文档中所有现有段落的样式。尽管样式适用于所有现有段落,Debug.Print语句应该按预期显示正在更新的范围。

    正如你所知,我已经玩弄了这么多,但无济于事。在这件事情上,任何帮助都会受到赞赏。

    感谢。

1 个答案:

答案 0 :(得分:1)

在以下代码行中:

 wrdRange.text = totalArray(i, colIndex(3)) & Chr(11)

使用Chr(13)代替Chr(11)。后者只是换行符,而不是新段落。因此,将样式应用于Range的任何部分实际上是将其应用于代码生成的所有文本,因为它是单个段落。