Reference Nested Form Fields in VBA

Reference Nested Form Fields in VBA

Reference Microsoft Access Form Controls from VB Script

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 Reference Nested Form Fields 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 its 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 its 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

Visual Basic Tutorials:

Access-Google Earth Age Calculation Change To Proper Case Email via Gmail #1
Send Gmail Email #2 Inactivity Logout Code Outlook Email Read Email Access
Email Attachment Send Outlook Email Running Sum Denormalize Records
Stock Quotes CreateQueryDef Find Database Path Detail-Master Update
Data Field Validation Field Value New-Old FindFirst Access Version
Global Variable Parameter Global Variables Active Labels Files List Box
Mail Merge Quick Sort Select Case Access Transactions