Word VBA:当文本格式化为隐藏时,如何使用find.execute获取精确的搜索结果

时间:2017-03-25 19:09:22

标签: vba ms-word

我在设置Selection.Find.Execute时在包含修订标记的文字中使用MyRange.Find.ExecuteOptions.DeletedTextMark = wdDeletedTextMarkHidden。或者,我在文本中搜索某些字符串的格式为Font.Hidden = True

如果在搜索结果之前或之后会有隐藏文字,它将包含在搜索结果中,任何后续操作(如Selection.Range.HighlightColorIndex = wdGreen)都将包含隐藏部分。

是否有一种简单的方法可以确保搜索结果与搜索到的字词完全一致?

1 个答案:

答案 0 :(得分:0)

到目前为止,我发现的最好的解决方法是以下功能:

Function ExactRange(Optional rngFoundRange) as Boolean

  If IsMissing(rngFoundRange) Then Set rngFoundRange = Selection.Range
  Vi_LenInitial = rngFoundRange.End - rngFoundRange.Start

  rngFoundRange.SetRange _
    Start:=rngFoundRange.Characters(1).End - 1, _ 
    End:=rngFoundRange.Characters(Len(rngFoundRange)).End

  Vi_LenExact = rngFoundRange.End - rngFoundRange.Start
  ExactRange = IIf(Vi_LenInitial = Vi_LenExact, True, False)
End Function

如果找到的范围是精确的,则函数将为True,如果不精确且需要进行调整,则为False。在任何情况下,执行后找到的范围应与搜索字符串完全匹配。