创建窗体的多个实例

有时,同时显示窗体的多个实例非常有用。 例如,您可能需要同时显示雇员和雇员主管的记录。 可以创建两个“雇员”窗体类的实例:一个用来显示雇员记录,另一个显示主管记录。

创建窗体或报表类的新实例时,新实例具有 FormReport 对象的所有属性和方法,并且其属性的值设置为与原始 FormReport 对象的属性值相同。 此外,已写入窗体或报表类模块的所有过程都作为新实例的方法和属性。

若要创建窗体或报表类的新实例,请使用 Shell 关键字和窗体或报表的 类模块的名称来声明新的对象变量。 类模块的名称显示在模块的标题栏中。 它指明类是否与窗体或报表关联,并且包含该窗体或报表的名称。 例如,“雇员”窗体的类名称为 Form_Employees。 以下代码行将创建“雇员”窗体的新实例:

Dim frmInstance As New Form_Employees 

通过创建“雇员”窗体类的多个实例,您可以在一个窗体实例上显示某个雇员的信息,在另一个窗体实例上显示另一个雇员的信息。

注意

When you create an instance of a form class by using the New keyword, it is hidden. To show the form, set the Visible property to True.

应该在模块级声明表示窗体类的新实例的变量。 如果在过程级声明变量,则过程运行完成时,该变量会超出范围,并会从内存中删除新实例。 只要分配给实例的变量在范围之内,该实例就会在内存中。

您所设置的任何属性都将影响窗体类的该实例,但不会与窗体一起保存。 此外,如果在设计视图中打开窗体,就无法创建窗体类的新实例。

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。