アクティブモジュール内のプロシージャを呼び出す場合と同様に、アクティブモジュールと同じプロジェクトのモジュール内にあるプロシージャを呼び出すことができますが、複数のモジュールに同じ名前のプロシージャが記述されている場合、呼び出しステートメントでモジュール名を指定しなければなりません。
ここでは、2つのフォームを閉じる際に、2つのモジュールに同じ名前で記述されているプロシージャを呼び出して、それぞれのフォームを閉じます。
●操作手順●
- フォームを2つ新規作成します。
フォーム名:フォーム1
フォーム名:フォーム2
- フォーム1を、デザインビューで開きます。
- フォーム1の次のプロパティを操作します。
開く時/Open
閉じる時/Close
- 「開く時/Open」のイベントプロシージャに次のステートメントを記述します。
Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm "フォーム2"
End Sub
- 標準モジュールを新規に2つ作成します。
モジュール名:Module1
モジュール名:Module2
- Module1に次のプロシージャを作成します。
Sub FormClose()
MsgBox "フォーム1を閉じます"
End Sub
- Module2に次のプロシージャを作成します。
Sub FormClose()
MsgBox "フォーム2を閉じます"
DoCmd.Close acForm, "フォーム2"
End Sub
- フォーム1の「閉じる時/Close」のイベントプロシージャに次のステートメントを記述します。
Private Sub Form_Close()
'フォーム2を閉じるお知らせメッセージを表示して
'フォーム2を閉じる
Module2.FormClose
'フォーム1を閉じるお知らせメッセージを表示する
Module1.FormClose
End Sub
- フォーム1とModule1とModule2を保存して、フォーム1とフォーム2は閉じます。
- フォーム1を開くと、同時にフォーム2も開かれます。
- フォーム1を閉じると、次のメッセージが表示され、[OK]ボタンをクリックするとフォーム2が閉じられます。
「フォーム2を閉じます」
- 続いて、次のメッセージが表示されて[OK]ボタンをクリックするとフォーム1が閉じられます。
「フォーム1を閉じます」