使用 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
我在 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