如何通过Word vba range.find

时间:2018-05-22 11:17:47

标签: word-vba

我在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;的行为。替换对话框。根据文本的位置移动对话框。当我在文本上有一个表单和确认对话框时,我可以实现相同的目的吗?

1 个答案:

答案 0 :(得分:1)

语句myRange.Select已经在您的代码中将选择放在找到的文本上,如果它在屏幕外,则将其滚动到视图中。但是,如果Selection隐藏在自定义表单(userform?)或消息框后面,那将无济于事。如果您可以找出选择相对于屏幕坐标的位置,您可以将表单移开。