Use Find object to manipulate all appearances of a text of a document

Using Find method of Select object is very effective way to change all appearance of a text in a document. For example you may want to capitalize all the first case after ” in the document. Below is pseudo code to demo it:

Sub convertToUppercases() 
   'Goto start of the document 
    Selection.HomeKey Unit:=wdStory 
    switchCases False 
End Sub 
Sub convertToLowercases() 
    'Goto start of the document 
     Selection.HomeKey Unit:=wdStory 
     switchCases True 
End Sub 

Sub switchCases(ByVal bToLowerCase As Boolean) 
    Dim sText As String 
    Dim lCount As Long 
    Selection.Find.ClearFormatting 'Clear current find  
    With Selection.Find  
        .Text = <put some text need to be found here>   
        .Replacement.Text = ""   
        .Forward = True   
        .Wrap = wdFindContinue   
        .Format = True   
        .MatchCase = False   
        .MatchWholeWord = False   
        .MatchAllWordForms = False   
        .MatchSoundsLike = False   
        .MatchWildcards = True   
    End With    
    Do    
        Selection.Find.Execute     
        If Selection.Find.Found Then     
            if bToLowerCase then     
                <put the code need to be done here>     
            else     
                <put the code need to be done here>     
            end if     
        end if     
    Loop Until Not Selection.Find.Found     
End Sub
Advertisements

Looking for a row using Find method against the Selection object

Function myFindRowPos(sText As Variant, oSheet As Worksheet, _
  Optional SearchDirection As XlSearchDirection = xlNext, _
  Optional SearchOrder As XlSearchOrder = xlByRows, _
  Optional sFindRange As String = "A1:A10000", _
  Optional LookAt As XlLookAt = xlWhole) As Long

  Dim lResult As Long, oRg As Range

  On Error GoTo errLabel
  oSheet.Activate
  oSheet.Range(sFindRange).Select

 Set oRg = Selection.Find(What:=sText, after:=ActiveCell, LookIn:=xlValues, LookAt:= _ LookAt, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False)   If Not oRg Is Nothing Then
     lResult = oRg.Row
  Else
     lResult = -1 'not found
        End IferrExit:
    myFindRowPos = lResult
    Set oRg = Nothing
    Exit Function
errLabel:
    lResult = -1
    Resume errExit
End Function