13.6. Forms as Objects

By now you should have a fair grasp on how to create classes and class objects in Access 2007. Something you might not be aware of is the fact that because form and report modules are also class modules, you can instantiate and use them in exactly the same way as any other class object. The greatest benefits of this are that you can create and operate on more than one instance of the object at any one time, and you can use its events by declaring their object variables using the WithEvents keyword.

Let's say you have a form called Form1. You would, of course, be familiar with the tried and true method of displaying a standard form.

DoCmd.OpenForm "Form1"
DoCmd.Close acForm, "Form1"

Copy the following code into a standard module and try stepping through it using the F8 key.

Public Sub TestFormClass()
    Dim frm As Form_Form1
    Set frm = New Form_Form1

    frm.Visible = True
    Set frm = Nothing
End Sub

Then try the same thing with a report.

Public Sub TestReportClass()
Dim rpt As Report_Report1
    Set rpt = New Report_Report1

    rpt.Visible = True
    Set rpt = Nothing
End Sub

Often, you may want to display a data selection dialog box while editing data in a form, and to return the selected value from the dialog box to the original form. For example, in Microsoft Word, you select Date and Time from the Insert menu. This displays the Date and Time dialog box, from which you select the format of the date you want to insert into your text. You're about to see a mechanism for returning ...

Get Access™ 2007 VBA Programmer's Reference now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.