使用 vba 代码缩进段落后,Word 文档未在视觉上反映更改

Word document not reflecting change visually after vba code is used to indent a paragraph

我在 Word 2010 中有一个简单的 vba 代码:

Sub IncreaseIndent()
    For Each p In Selection.Paragraphs
        p.LeftIndent = p.LeftIndent + InchesToPoints(0.25)
        p.FirstLineIndent = InchesToPoints(-0.25)
    Next
End Sub

它很好用,可以满足我的需要,而且我已将它关联到一个快捷键。但我正试图找出它的最后一个故障。当我使用它时,段落缩进,但它在文档中的视觉刷新不正确。我必须滚动以使文本不可见,然后再将其滚动回去。 (任何使 Word 重新呈现的操作都有效,例如切换到另一个 window 在 Word 之上的程序,然后再返回。)之后,该段落看起来应该是它应该的样子。

我想我缺少某种 p.Refresh / 重新渲染 / 重新计算命令,但不知道那是什么。有人知道如何在 vba 代码中引起刷新吗?

谢谢, 桑德拉

我无法复制您描述的内容,但有一个 .ScreenRefresh 方法可能会成功。

https://msdn.microsoft.com/en-us/library/office/ff193095(v=office.15).aspx

注意:在 MSDN 提供的示例代码中(并在下面稍作修改),当我测试它时,切换 ScreenUpdating 属性 没有效果,它 总是 似乎在我 运行 时为我更新,即使明确设置为 False

Sub t()

Dim rngTemp As Range

Application.ScreenUpdating = False

Set rngTemp = ActiveDocument.Range(Start:=0, End:=0)

rngTemp.InsertBefore "new"
Application.ScreenRefresh

Application.ScreenUpdating = True

End Sub