Flush bad karma from Word's find facility after an unsuccessful wildcard search

Article contributed by Bill Coan

There is a bug in Word that means any Find or Find or Replace operation in VBA that follows an unsuccessful wildcard search may sometimes fail. The following code fixes this problem.

Sub WildcardSearch()


  Dim myWorkingRange As Range

  Set myWorkingRange = ActiveDocument.Range


  'call a routine that removes any previous settings from the find dialog

  Call ClearFindAndReplaceParameters


  myWorkingRange.Find.Execute FindText:= "[!^013]" , _

      MatchWildcards:= True , Forward:= True


  'exit sub if search is successful

  If myWorkingRange.Find.Found Then

    MsgBox "tell the user something"

    Call ClearFindAndReplaceParameters

    Exit Sub

  End If


  'this is a dummy search because otherwise

  'subsequent searches will break down

  'somehow this search flushes the bad karma

  'and lets subsequent searches function


  myWorkingRange.Find.Execute FindText:= "^p" , _

      MatchWildcards:= False


  'call a routine that removes all settings from the find dialog

  'so future users of the dialog won't get strange results


  Call ClearFindAndReplaceParameters


End Sub


Sub ClearFindAndReplaceParameters()


  With Selection.Find



    .Text = ""

    .Replacement.Text = ""

    .Forward = True

    .Wrap = wdFindStop

    .Format = False

    .MatchCase = False

    .MatchWholeWord = False

    .MatchWildcards = False

    .MatchSoundsLike = False

    .MatchAllWordForms = False

  End With


End Sub


Note: There is no simple way to reproduce this bug. In a macro that makes dozens of wildcard searches, the bug will eventually manifest itself, but I don't know of a way to force the bug to appear. The good news is that if you use the above workaround, the bug will never appear.

See also:
How to prevent the built-in BrowseNext and RepeatFind commands from creating bad karma for wildcard searches