title: Get paragraph no where txt is found, and move text to end of paragraph using Word 2010 vba
body: <p>I am trying to use VBA to move a rich text clause ("strText"), which appears at the beginning of various paragraphs, to the end of each paragraph where the clause appears, and thereafter to underline strText.</p>
  
  <p>I am a novice/hobbyist at vba programming, so please be gentle.  I spent a few days on this before seeking help.</p>
  
  <p>Problems with my attempted coding (which appears below):</p>
  
  <ol>
  <li><p>I tried to assign to var "LparaNo" the number of the paragraph wherein the found text (strText) appears. But the number that "LparaNo" returns is totally off base. 
  If someone has a suggestion about how to get the right paragraph number, I'd appreciate it.
  My intention is to set a range variable objRange_ParaHoldingText= ActiveDocument.Paragraphs(LparaNo).Range, i.e., a range that would reflect the paragraph in which the sought text was found.</p></li>
  <li><p>I can't figure out how to move objRange01 ("strText", which is formatted text) to the end of the paragraph in which it appears.</p></li>
  </ol>
  
  <p>Any suggestions would be much appreciated.</p>
  
  <p>Thanks,        Marc</p>
  
  <pre><code>Sub subFindTextAndMoveItToEndOfTheSameParagraphAndUnderlineIt_03()
  
      ' Code canniablized from http://stackoverflow.com/questions/11733766/how-to-search-for-text-and-check-for-underline-in-vba-for-word
      Dim c As Range
      Dim fnd As String
      Dim strText As String
      Dim objRange01 As Range
      Dim objRange02 As Range
      Dim objRange03 As Range
      Dim LparaNo As Long
      Dim strParazText As String
  
  
      With ActiveDocument
  
          strText = "Falsification  45 C.F.R. §" &amp; Chr(160) &amp; "6891(a)(2):  "
  
          ' My objectives are: (1) to move strText from the beginning of various paragraphs, to the end of each paragraph where it appears,
          '    and thereafter, (2) to delete the ":" at the end of strText, and (3) to underline strText
  
          fnd = strText
  
          If fnd = "" Then Exit Sub
  
          Set c = ActiveDocument.Content
  
          c.Find.ClearFormatting
          c.Find.Replacement.ClearFormatting
  
          With c.Find
              .Text = fnd
              .Replacement.Text = ""
              .Forward = True
              .Wrap = wdFindStop
          End With
  
          c.Find.Execute
  
          While c.Find.Found
              c.Select ' I am trying to select the text that was found
  
              Set objRange01 = c ' I am trying to set objRange01 = the text that was found, and selected
              Selection.EndOf Unit:=wdParagraph, Extend:=wdExtend ' I am extending the selection to include the entire paragraph
              Set objRange02 = Selection.Range 'The entire paragraph
              Set objRange03 = ActiveDocument.Range(Start:=0, End:=Selection.End) ' I am trying to set objRange02 = all text from
              '                                                                     '   beginning of doc thru objRange01.text
              LparaNo = objRange03.ComputeStatistics(wdStatisticParagraphs) + 1 ' I am trying to set LparaNo = the no. of paras in all
              '                                                                 '    text from beginning of doc thru the end of objRange02.
              '                  ' Alas, the number generated for "LparaNo" is incorrect. The paragraph number generated for "LparaNo"
              '                  '    is the number for a paragraph that appears 5 pages before objRange01.text
  
              MsgBox "Paragraph # " &amp; LparaNo &amp; "  [objRange01.Text = c = ]  " &amp; Chr(34) &amp; objRange01.Text &amp; Chr(34) &amp; vbCrLf &amp; _
                      vbCrLf &amp; objRange02.Text &amp; vbCrLf &amp; vbCrLf &amp; _
                      ActiveDocument.Paragraphs(LparaNo - 2).Range.Text &amp; vbCrLf &amp; _
                      ActiveDocument.Paragraphs(LparaNo - 1).Range.Text &amp; vbCrLf &amp; _
                      ActiveDocument.Paragraphs(LparaNo).Range.Text &amp; vbCrLf ' &amp; _
  '                    ActiveDocument.Paragraphs(LparaNo + 1).Text &amp; vbCrLf &amp; _
  '                    ActiveDocument.Paragraphs(LparaNo + 2).Range.Text &amp; vbCrLf '&amp; _
  
              objRange01.Move Unit:=wdParagraph, Count:=1 ' I am trying unsuccessfully to move the selected text to the beginning
              '                                            '   of the next paragraph
              objRange01.Move Unit:=wdCharacter, Count:=-1 ' I am trying unsuccessfully to move the selected text from the beginning
              '                                            '   of the next paragraph, to the end of the preceding paragraph, i.e.,
              '                                            '   to the end of the selected text's paragraph of origin.
              c.Find.Execute
  
          Wend ' While c.Find.Found
  
      End With
  
  End Sub 'subFindTextAndMoveItToEndOfTheSameParagraphAndUnderlineIt_03
  </code></pre>