HOME > 即効テクニック > AccessVBA > コントロール > 同じ名前のプロシージャを呼び出してフォームを閉じる

即効テクニック

コントロール

同じ名前のプロシージャを呼び出してフォームを閉じる

(Access 2000/2002)
アクティブモジュール内のプロシージャを呼び出す場合と同様に、アクティブモジュールと同じプロジェクトのモジュール内にあるプロシージャを呼び出すことができますが、複数のモジュールに同じ名前のプロシージャが記述されている場合、呼び出しステートメントでモジュール名を指定しなければなりません。
ここでは、2つのフォームを閉じる際に、2つのモジュールに同じ名前で記述されているプロシージャを呼び出して、それぞれのフォームを閉じます。

●操作手順●
  1. フォームを2つ新規作成します。 フォーム名:フォーム1 フォーム名:フォーム2
  2. フォーム1を、デザインビューで開きます。
  3. フォーム1の次のプロパティを操作します。   開く時/Open   閉じる時/Close
  4. 「開く時/Open」のイベントプロシージャに次のステートメントを記述します。 Private Sub Form_Open(Cancel As Integer) DoCmd.OpenForm "フォーム2" End Sub
  5. 標準モジュールを新規に2つ作成します。 モジュール名:Module1 モジュール名:Module2
  6. Module1に次のプロシージャを作成します。 Sub FormClose() MsgBox "フォーム1を閉じます" End Sub
  7. Module2に次のプロシージャを作成します。 Sub FormClose() MsgBox "フォーム2を閉じます" DoCmd.Close acForm, "フォーム2" End Sub
  8. フォーム1の「閉じる時/Close」のイベントプロシージャに次のステートメントを記述します。 Private Sub Form_Close() 'フォーム2を閉じるお知らせメッセージを表示して 'フォーム2を閉じる Module2.FormClose 'フォーム1を閉じるお知らせメッセージを表示する Module1.FormClose End Sub
  9. フォーム1とModule1とModule2を保存して、フォーム1とフォーム2は閉じます。
  10. フォーム1を開くと、同時にフォーム2も開かれます。
  11. フォーム1を閉じると、次のメッセージが表示され、[OK]ボタンをクリックするとフォーム2が閉じられます。 「フォーム2を閉じます」
  12. 続いて、次のメッセージが表示されて[OK]ボタンをクリックするとフォーム1が閉じられます。 「フォーム1を閉じます」