- ベストアンサー
フォーム作成と同時にイベントを作成する方法
- Accessでフォームを作成すると同時にイベントを作成する方法について説明します。
- 標準モジュールを使用して、フォームを作成し、同時にイベントを生成する方法を紹介します。
- また、クラスモジュールを使用する方法や、サンプルコードも提供します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
・・・ひょっとして、ランタイム環境下での開発用インター フェースでも作成されていたりするのでしょうか・・・? 新規作成したフォームにイベントを組み込む場合の ポイントとなるのは ・FormオブジェクトのModuleプロパティの使用 (それを経由しての、AddFromStringメソッドを 使用したコードの追加) ・Formオブジェクトの当該イベントプロパティへの 「[Event Procedure]」の設定 になります。 具体的には以下の通りです(標準モジュールでOk): Public Sub フォームを作成() On Error GoTo エラー処理 Dim myForm As Form, myModule As Module '追加するコードを予め定数として宣言 '(変数で宣言して、コード内で編集してもOk) Const cCode As String = "Private Sub Form_Open(Cancel As Integer)" & vbCrLf _ & "MsgBox ""開きました""" & vbCrLf _ & "End Sub" Set myForm = CreateForm '明示的に『コード保持』プロパティを「はい」に設定 '(なくても自動で設定されるようですが、念のためで) myForm.HasModule = True '『開く時』イベントに「[イベント プロシージャ]」を設定 myForm.OnOpen = "[Event Procedure]" 'AddFromStringを使用して、フォームモジュールに 'コードを追加 Set myModule = myForm.Module myModule.AddFromString cCode DoCmd.Close acForm, myForm.Name, acSaveYes 終了処理: 'オブジェクト変数を明示的に解放 Set myModule = Nothing Set myForm = Nothing Exit Sub エラー処理: MsgBox Err.Number & ":" & Err.Description, vbCritical, "フォームを作成" Resume 終了処理 End Sub ・・・以上です。 なお、何らかの原因で一旦上記のコード実行中にエラーが 発生した際に、次に再度実行するとフォームが保存されない 現象が見られました。 もしこの現象が再現するような場合は、一旦そのAccessの ファイルを閉じ、開き直してから再実行してみてください(汗) (オブジェクト変数myForm/myModuleを明示的に解放して はいるものの、残骸が内部に残っているのかもしれません)
お礼
ご回答ありがとうございました。