Sometimes it is useful to display more than one instance of a form at a time. たとえば、ある社員と、その社員の管理者のレコードを同時に表示する場合があります。 [社員] フォームのクラスから、社員のレコードを表示するために 1 つのインスタンス、管理者のレコードを表示するためにもう 1 つのインスタンスを作成できます。
フォーム クラスまたはレポート クラスの新しいインスタンスを作成すると、新しいインスタンスには Form または Report オブジェクトのすべてのプロパティとメソッドが作成され、そのプロパティは元の Form または Report オブジェクトと同じ値に設定されます。 加えて、フォームまたはレポートのクラス モジュールで記述したすべてのプロシージャは、新しいインスタンスのメソッドおよびプロパティとして扱われます。
フォームまたはレポート クラスの新しいインスタンスを作成するには、 Shell キーワードとフォームまたはレポートのクラス モジュールの名前を使用して、新しいオブジェクト変数を宣言します。 The name of the class module appears in the title bar of the module. It indicates whether the class is associated with a form or a report and includes the name of the form or report. For example, the class name for an Employee form is Form_Employees. The following line of code creates a new instance of the Employees form:
Dim frmInstance As New Form_Employees
[社員] フォーム クラスの複数のインスタンスを作成することにより、1 つのフォーム インスタンス上で 1 人の社員についての情報を示し、別のフォーム インスタンス上で別の社員についての情報を示すことができます。
注:
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 のサポートおよびフィードバックを参照してください。