WD: Sample 'While EditFindFound' Looping Macro

Last reviewed: November 17, 1997
Article ID: Q86259
The information in this article applies to:
  • Microsoft Word for Windows, versions 1.0, 1.1, 1.1a, 2.0, 2.0a, 2.0a-CD, 2.0b, 2.0c, 6.0, 6.0a, 6.0c
  • Microsoft Word for Windows 95, versions 7.0, 7.0a
  • Word for the Macintosh, versions 6.0, 6.0.1

SUMMARY

The following sample macros can be used to search for the occurrence of text in a Microsoft Word document.

MORE INFORMATION

NOTE: Microsoft provides macros "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

Word 6.x, 7.x

This sample macro prompts you for a text string to search for and then returns the number of times the text was found in a message box. The macro starts at the top of the document and counts the total number of occurrences in the document.

   Sub MAIN
      StartOfDocument
      counter = 0
      On Error Goto bye
      searchtext$ = InputBox$("Enter text to search for?")
      EditFind .Find = searchtext$, .Direction = 0
      If Not EditFindFound() Then
         MsgBox "Search Text Not Found"
         Goto bye
      End If
      While EditFindFound()
         counter = counter + 1
         EditFind .Find = searchtext$, .Direction = 0
      Wend
      MsgBox searchtext$ + " was found" + Str$(counter) + "time(s)"
   bye:
   End Sub


Word 2.x

   Sub MAIN
      StartOfDocument
      counter = 0
      On Error Goto bye
      searchtext$ = InputBox$("Enter text to search for?")
      EditFind .Find = searchtext$, .Direction = 2
      If Not EditFindFound() Then
         MsgBox "Search Text Not Found"
         Goto bye
      End If
      While EditFindFound()
         counter = counter + 1
         EditFind .Find = searchtext$, .Direction = 2
      Wend
      MsgBox searchtext$ + " was found" + Str$(counter) + "time(s)"
   bye:
   End Sub


Word 1.x

Make the following substitutions in the Word 2.x macro:

  • Change the EditFind commands to the following syntax:

          EditSearch .Search = searchtext$, .Direction = 2
    
  • Change the line, "If Not EditFindFound() Then" to the following:

          If Not EditSearchFound() Then
    
  • Change the line, "While EditFindFound()" to the following:

          While EditSearchFound()
    

The counter variable is used to count the number of times the search text is found (counter = counter + 1). If the search text is not found in the document, a message box informs you that the search text was not found.

If you want to apply a format or perform commands when the search text is found, add the appropriate commands below the EditFind command. For example, in Word 2.x:

   EditFind .Find = searchtext$, .Direction = 2
   FormatCharacter .Bold = 1     'Makes search text bold

   While EditFindFound()
      counter = counter + 1
      EditFind .Find = searchtext$, .Direction = 2
      FormatCharacter .Bold = 1     'Makes search text bold
   Wend

If the search text is found, the text formatting is changed to bold and the counter increments by 1. Other WordBasic commands can be used in place of the line that reads "FormatCharacter .Bold = 1." (WordBasic commands entered below the EditFind command are executed when the search text is found.)

REFERENCES

"Using WordBasic," by WexTech Systems and Microsoft, pages 180-181

"Microsoft Word for Windows and OS/2 Technical Reference," pages 200, 224-225, 286

Kbcategory: kbusage kbmacro KBSubcategory:


Additional query words: 1.0 1.10 1.10a 2.0 2.0a 2.0a-cd 2.0 2.0c
6.0 6.0a 6.0c 7.0 7.0a 6.0.1 cwinword2 word95 winword msgbox
search loop editsearchfound search macword word7 word6 find while
editfindfound
Keywords : macword macword5 winword winword2 word6 word95
Version : WINDOWS: 1.0, 1.1, 1.1a, 2.0, 2.0a, 2.0a-CD, 2.0b, 2.0c, 6.0, 6.0a, 6.0c, 7.0, 7.0a; MACINTOSH:3.0,3.01,3.02,4.0,5.0,5.10,6.0,6.0.1,6.0.1a;


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: November 17, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.