There really is some consistancy. You just have to stumble across it.
Dot is always used when referencing VBA properties and methods
Bang is always (except two cases) used when referencing user defined objects. The two exceptions are the field collections of forms and reports. In these two cases, Bang and Dot are interchangeable but the Dot has the early binding I wrote about in the other post. The reason that Dot works in these cases is because Access treats the fields of the bound recordsource for a form/report as properties and adds them to the form/report collection.
There are idiosyncrasies that you need to be aware of when using the Dot in these cases. Since the recordsource fields are added to the collection at the time that the recordsource is specified, if you happen to change the query, there is nothing that will prompt the form/report to automatically refresh its properties collection to "see" the new fields. The fields list will show them but if you were to try to use them in code, you would get compile errors. You can force Access to refresh the properties collection by deleting the recordsourse/saving the form/report and then re-adding the queryname to the recordsource. This will now make the new fields available for reference via Dot in VBA.