I discussed two ranges - the first being what you're referring to as wdDoc.Range, the second being the range derived from wdDoc.Range.Find.Execute. It is that second range to which the (unnecessary) .Duplicate refers and from which StrTxt is populated.
Is there a way to Watch the fully qualified expression for the range derived from wdDoc.Range.Find.Execute? (wdDoc.Range.Find.Execute only evaluates to a Boolean) .

What you need to understand is that .Find.Execute changes the range
<----- "the range" refers to which range?

According to my watches list wdDoc.Range.Text does not change from the document to found range as I understood from your previous explanation. Therefore I'm still confused as where this new range is located (i.e what is its fully qualified name?)

My specific confusion is highlighted by the comment after the StrTxt assignment in the code below.

    With wdDoc.Range 'Range#1
      With .Find
        .ClearFormatting
        .Text = "P[0-9]{5,6}"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchWildcards = True
        .Execute
      End With
      If .Find.Found = True Then
        StrTxt = .Duplicate.Text  'What is the fully qualified expression for this .Duplicate.Text ? Based on my watches list, it appears this is not wdDoc.Range.Duplicate.Text as I would expect from the "With wdDoc.Range" statement from above.