This is because
in VBA - but NOT via the menu - all punctuations, like periods, are countesd as "words". Let's take your:
The cat.
Sat on the.
Mat.
Paragraph marks are symbolized by ^p, so this becomes:
The cat. ^p
Sat on the. ^p
^p
Mat.^p
1. The
2 cat
3. .
5. ^p
6. Sat
7. on
8. the
9. .
10. ^p
11. ^p (the separating paragraph...)
12. Mat
13. .
This is also assuming you did not include the terminating paragraph mark (at the end of "Mat.")
There is no easy way around this. VBA is built this way. Again, if you use the menu Tools > Word Count this is not the case.
1 have a couple of comments/suggestions.
1. The fact you are looking for "Normal" is not good. Try a much as possible to NEVER use "Normal".
2. You can filter out thing sby using the ASCII character of the first character of each "word". If it is NOT within the A-Z (and a to z, just in case you need it) range, then do NOT count the "word".
Code:
Sub CountSpecificStyle()
Dim r As Range
Dim j As Long
Dim aWord
Set r = ActiveDocument.Range
With r.Find
.Style = "Gerry"
Do While .Execute(Forward:=True) = True
For Each aWord In r.Words
Select Case Asc(aWord)
Case 65 To 90 ' upper case
j = j + 1
Case 97 To 122 ' lower case
j = j + 1
End Select
Next aWord
Loop
End With
MsgBox j & " words are using the Gerry style."
End Sub
Now this is a count of a style named "Gerry". This is a reinforcement of #1 - avoiding "Normal". Normal is often modified by users, and if it is, it will still be counted (as it is still "Normal").
A great deal also is dependent on whether you have people (or yourself) putting those "extra" paragraphs - hitting the Enter key to make space between paragraphs.
They count as words. They count as paragraphs. If styles are used fully and properly there will never be ANY of these.
NOTE. a period followed by two spaces is considered a "word".
Gerry