Andy Baron has a fairly clear explanation of what the differencd is:
Cleaner Coding: Bang vs. Dot
at:
http://my.advisor.com/articles.nsf/aid/05352
Like Tony, I use the dot whereever I can, because the dot allows VBA to:
a) auto-complete the variable names (quicker, more accurate),
b) catch errors at compile time.
Anything that helps make the application is bug-free has to be worth it.
I do use the bang for referring to fields, not controls:
a) You must use the bang for fields of a Recordset. (Dot won't compile.)
b) The dot does not work reliably when referring to AccessFields.
An AccessField is the (hidden) type when a name does not resolve to a
control, but is there as a field in the RecordSource of form. For example,
if the form's source query has a field named CustomerID, but there is no
text box named CustomerID, then Me.CustomerID or Me!CustomerID is of type
AccessField. There seem to be inconsistencies in the way Access handles this
data type, so under certain conditions, Me.CustomerID will fail. You then
solve it either by adding a text box named CustomerID (hidden if you wish),
or by using Me!CustomerID. So, having been bitten a few times, I always use
the bang rather than the dot for AccessFields.