Because using Property Let, Get and Set, we can have the same name for the read and the write method. Usually in a programming language your function identifier must be non-ambiguous. You can't use the same name in one specific scope. Using Property, the "visible" name is the same and the "context" of the code will "decide" what function is called. I believe that under the hood VBA will name the functions with different names.