This is the best explanation of the bang operator I've seen (and I quote)
The bang operator provides late-bound access to the default member of an object, by passing the literal name following the bang operator as a string argument to that default member.
This would suggest that the default member of a form is its collection of fields (which I cannot ascertain) which is why what Ajax said would work. Since ! is late bound, it will not raise an error during a compile, though the line might generate an error for some other reason. Thus I don't agree that Me. is specifically a way to refer to form (or report) controls since
Msgbox Me.txtMytextbox
will produce exactly the same result as
Msgbox Me!txtMytextbox
regardless of whether the control is bound or not.
We all have our own methods that work (most of the time?) and I for one never name a control the same as the field it is bound to. I have run into cases where the ambiguity of that caused me a problem because Access cannot figure out if you're referring to the field or the control. I can't recall the details of the problem; suffice to say I have never named the two the same since.
Sorry if I misinterpreted anything that was said here.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.