我在Word中编写一个宏,用映射定义替换一些文本。
我想让用户选择为每次替换提供确认,就像默认的Find&取代
如何将焦点设置在找到的文本上? 如何将特定部分滚动到视图中?
我需要使用自定义VBA代码(而不是默认的Find& Replace),因为我必须在读取映射后处理文档。
我已经能够替换文本,并向用户显示警报。 但是,我希望在显示警报时将重点放在文本上。
当前代码:
Do While myRange.Find.Execute( _
FindText:=dict.Items()(i) & " (" & Word & ")", _
MatchCase:=False, _
MatchWholeWord:=True _
)
myRange.Select
If MsgBox("Replace '" & myRange.Find.Text & "' with '" & Word & "'?", vbYesNo) = vbYes Then
myRange.Text = Word
End If
myRange.Start = myRange.Start + Len(myRange.Find.Text)
myRange.End = cached
Loop
P.S。我打开了一个自定义表单/对话框,从中运行宏; 所以文本在对话框后面。
编辑:根据Jay的回复,我再次检查了Find& amp;的行为。替换对话框。根据文本的位置移动对话框。当我在文本上有一个表单和确认对话框时,我可以实现相同的目的吗?
答案 0 :(得分:1)
语句myRange.Select已经在您的代码中将选择放在找到的文本上,如果它在屏幕外,则将其滚动到视图中。但是,如果Selection隐藏在自定义表单(userform?)或消息框后面,那将无济于事。如果您可以找出选择相对于屏幕坐标的位置,您可以将表单移开。