Bob Phillips said:
because it returns a range object, it doesn't do anything it itself (unlike
say delete method).
I know you meant well, but that actually doesn't explain it.

Good
programming practice breaks methods (functions, procedures, routines) into
two general categories:
1. Routines whose purpose is to modify data. These routines shouldn't return
anything, except possibly a status code.
2. Routines whose purpose is to return data. These routines shouldn't change
anything.
In other words, it's perfectly normal for functions to return information
without changing anything--the two go hand in hand.
What generally distinguishes properties from the second class of methods is
that a property generally represents an intrinsic attribute of the object it
belongs to--such as the length of a string, the radius of a circle, the
background color of a shape. It is rather transparent to the programmer that
he is dealing with a property rather than a member variable or field. For
example, it is syntactically correct to assign a value *to* a property
(though, semantically, a particular property may be designated read-only):
MyText.Length = 5
A range that contains another range as well as its entire row and nine other
rows isn't conceptually a property or an attribute of the original range.
It's the product of a computation that uses the original range as a starting
point. So, conceptually, I would have expected a method rather than a
property. (Compare the idea that for a Person object, Employer or Mother or
Children are reasonably thought of as attributes or properties of the
person, while "all the people who live on the same block as the Person"
really isn't a basic attribute of the Person but, rather, something that can
be computed *for* the Person.)