====== Methods for Referring to Objects ======
===== Bang (!) verses Dot (.) verses Quotes ("") =====
In general, you follow the bang with the name of something you created: a form, report, or control. The bang also indicates that the item to follow is an element of a collection. You'll usually follow the dot with a property, collection, or method name. Actually, under the covers, the bang separator really says, "retrieve the following object from the default collection of the parent object."
* One place where the bang operator is necessary is in query parameters that refer to form fields. That is, you cannot avaoid the Forms!FormName!ControlName syntax in this case.
* Quotes allow you to use a string variable in place of the object name
* It is generally considered to be bad practice to use the bang in VBA code.
* Examples:
Set ctl = Forms("frmTest").Controls("txtName")
' since Controls is the default collection of a form, you can abbreviate the above line as either of the following:
Set ctl = Forms("frmTest")("txtName")
Set ctl = Forms("frmTest")!txtName
' bang vs quotes - the following statements are the same
cat.Tables!tblCustomers.Columns!Address.Type
cat.Tables("tblCustomers").Columns("Address").Type
^Syntax ^Details ^Example ^
|collection("name") |n/a |cat.Tables("tblCustomers").Fields("Street Number")|
|collection(var) |Where var is a string or variant variable |
strTable = "tblCustomers"
strField = "Street Number"
cat.Tables(strTable).Fields(strField)
|
|collection(ordinal position) |Where ordinal position is the object's position within its collection |cat.Tables(0).Fields(0) |
|
collection!name
collection![name]
|Brackets are necessary if name contains a nonstandard character, such as a space |cat.Tables("tblCustomers").Fields![Street Number] |