I think this will partially answer your question.
All I can say on top of that is that all objects have to be Set
in order to call any type of methods on them. It's the basics of the OOP concept. You can have an object of any type for example
Dim obj as Range
Dim obj as Application
Dim obj as Long
but it really is just a reserved room in the memory for this variable and is waiting to have a reference assigned.
So simply the answer is: No, it is not possible to have an empty range object set.
Check it out yourself:
Sub RangeTest()
Dim rng As Range
'Set rng = Range("A1")
ActiveWorkbook.Names.Add Name:="rngName", RefersTo:=rng.Address
MsgBox "count: " & rng.Cells.Count
End Sub
obviously the above fails, however »
Sub RangeTest()
Dim rng As Range
Set rng = Range("A1")
ActiveWorkbook.Names.Add Name:="rngName", RefersTo:=rng.Address
MsgBox "count: " & rng.Cells.Count
End Sub
also
Developer’s Guide to the Excel 2010 Range Object clearly states
The Range object represents one or more cells, and can be used to
represent a single cell, a row, a column, a selection of cells that
contain one or more contiguous blocks of cells, or a 3-D range.