For years I've been confused in my use of Range in Word. The thread linked below finally cleared it up for me.
Google VBA groups

The post that did the trick was by Lars-Eric GisslÚn , towards the end of the thread, where he said:

"In general you can look at it this way; if it's a Range property you will
get the pointer to an existing Range object, if it's a method a new range
object will be created with the parameters you pass and the pointer to the
new range object will be returned. This is quite basic to OOP. "

My problems mainly stemmed from playing around with .Start and .End and corrupting the parameter (as range) of the procedure.
Now (I think) I know how to pass a new range object as a parameter, my problems should go away.