フォーム名を使用して閉じたフォームの新しいフォーム インスタンスを作成するコード
長い Select Case リストを変数に置き換えたい。
Access 2010 には、フォームの名前を含む文字列を指定すると、フォームの新しいインスタンスを開く VBA 関数があります。フォーム変数 "frm" をコレクションに追加する:
mcolFormInstances.Add Item:=frm, Key:=CStr(frm.Hwnd)
「frm」を開く唯一の方法は、手動で入力した Select Case ステートメントを使用することです。
Select Case strFormName
Case "frmCustomer"
Set frm = New Form_frmCustomer
Case "frmProduct"
Set frm = New Form_frmProduct
... etc ... !
End Select
このように、自動的に実行したい(ただし、これは機能しません):
Set frm = New Eval("Form_" & strFormName)
またはいくつかのコードを介して:
For Each obj In CurrentProject.AllForms 'or AllModules, neither work
If obj.Name = strFormName Then
Set FormObject = obj.AccessClassObject 'or something
End If
Next
Set frm = New FormObject
プロジェクト内のすべてのフォームを一覧表示したり、新しいフォームが追加されるたびにリストを更新したりすることを避けたいだけです。