Oh, don't misunderstand me, macropod:
1) If the code
can work out for itself what ranges it should work with, that's always better. I'm saying only that when the use must tell the program something, and you can choose between pointing and typing, pointing is usually both easier for the user and more reliable.
2) Whether the user points or types, the program absolutely should do a lot of checking and be prepared to say "No, not there", and "you must be in one of these two worksheets to run this macro", and "this workbook is not a valid target", and so forth. That's even when
I am the user; I may know what to do most of the time, but some day I'll be absent-minded, and if my program says "you specified range R but constant C specifies option Z. Switching to mode M", I'll feel proud that I thought ahead.
3) I am usually the user
. The above still applies, though. About the only way I get careless on my own behalf is that in response to certain kinds of obvious errors, rather than abending with a clear error message I may just Stop with a comment. For end users this'd be a bad idea, but for me it allows the opportunity of fixing the program and moving on without having to start over.