在使用vba代码缩进段落后,Word文档不能直观地反映更改

时间:2015-02-06 18:16:03

标签: vba ms-word word-vba

我在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重新渲染的操作都可行,例如切换到窗口位于Word之上的另一个程序,然后再返回。)之后,段落看起来应该如此。

What it looks like when it indents, but does not re-render

我在想我错过了某种p.Refresh / Re-render / Recalc命令,但不知道那是什么。有人知道如何在vba代码中进行刷新吗?

谢谢, 桑德拉

1 个答案:

答案 0 :(得分:0)

我无法复制您描述的内容,但有一种.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