VBA determines that IsEmpty(Range("A1"))
implicitly uses the default property, so the expression is the same as IsEmpty(Range("A1").[_Default])
.
On the other hand, VBA determines that TypeName(Range("A1"))
does not use the default property, so the expression is different from TypeName(Range("A1").[_Default])
.
Question
How does VBA determine whether the default property is implicitly used or not?