I've never used a public variable. Shall I say that again? I've never
used a public variable. If I've never needed one, the chances are you
don't them either. Here's a hint: you should think in terms of passing
values between sub procedures (properties and methods - subs and
functions) not modules.
The closest I've come is a public property Get/Let pair in a class
module, which I would call from outside the class as
InstanceName.PropertyName.
When you use a public variable in a class module VBA implicitly makes
it a public property, technically called a 'field' I believe. You can
explicitly declare property Get/Let pairs in standard modules and get
the implicit behaviour of public variables in standard modules too.
And this is the Module1.MyVar syntax you are referring to i.e. the
equivalent of InstanceName.PropertyName.
But properties in a standard module, implicit or otherwise, don't
really make a lot of sense.