Have you come across the maddening task of trying to reference a deeply nested
form, form field or control?
Here is a real example of a deeply nested subform control - a combo box control which we want to disable.
Forms![MainMenu]![F_Project_Results].Form![F_Test_Results].
Form![F_Test_Materials].Form![F_Test_Results_Dates]
.Form![F_Test_Result_Parameters]
.Form![Parameter_Combo].Enabled = False
Isn't there an easier way to reference these fields directly? The
answer is YES!
You can reference any form directly using it's reference in visual basic:
Form_F_Test_Result_Parameters.Parameter_Combo.Enabled = False
Notice that we prefix the form name with Form_ use the dot '.'
operator to reference the form control.
There is one trick to this referencing method - the form which you are
referencing must have it's Has Module property set to Yes.
This method only seems to work in VBA code. Doesn't work when
referencing a form field as a query parameter nor in any of the property
settings.
Note that you can also reference a form's functions and subroutines using
the same method. For example:
Form_F_Test_Result_Parameters.Requery
(requeries the form)
Call Form_F_Test_Result_Parameters.Find_Test_Combo_AfterUpdate
(note that the function or subroutine must be Public and not Private to
reference it from another form or VBA module.)
And requery a combo box after its row source updates:
Form_F_Test_Materials.Find_Material_Combo.Requery