• ベストアンサー

Access メインからサブのfunctionを呼ぶには?

メインフォームからサブフォームに書いてあるFunctionを呼び出すにはどうしたらよろしいでしょうか? Call [Form_subform].testfunction では、だめなんですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

※作り フォーム1:親 フォーム2:子 フォーム1に「AAA」という名前でソースオブジェクト「フォーム2」を埋め込んであります ※手順1.フォーム2にPublicメソッドを用意 Public Function サブフォームメッセージ(ByVal p_strMSG As String) As VBA.VbMsgBoxResult   サブフォームメッセージ = MsgBox(p_strMSG, vbYesNoCancel) End Function ※手順2.フォーム1にボタンを用意 Private Sub コマンド1_Click()   Dim objFrm As Form_フォーム2   Set objFrm = Me.AAA.Form   Debug.Print objFrm.サブフォームメッセージ("あいうえお") End Sub

situmonnsya
質問者

補足

またまた、1050YENさんありがとうございます  Dim objFrm As Form_フォーム2  Set objFrm = Me.AAA.Form  Debug.Print objFrm.サブフォームメッセージ("あいうえお") の部分は、  Debug.Print Me.AAA.Form.サブフォームメッセージ("あいうえお") と、一行で書いても大丈夫ですよね。 Debug.Print はなんのオマジナイですか? 実行してるんだから、デバッグなんてなんかおかしな気分です。 _

その他の回答 (1)

回答No.2

>Debug.Print Me.AAA.Form.サブフォームメッセージ("あいうえお") そうですよー 一緒ですよー その方式はレイトバインディングもどきの使用方法です。 私のは、わかりやすくするために、サブフォームの型での変数を宣言したアーリーバインディング方式です。 どちらがよいのかは、単独での判断しかねます。 個人的基準としてですが、、、 ・埋め込むサブフォームがコロコロ変わるのであれば、レイトバインディング ・そうでなければアーリーバインディング をお勧めしたいです。 というのは、、、 アーリーバインディングは、もしサブフォーム名が変わったり、何らかの変更が発生したための不具合が、実行前にわかるという利点があります。ただし、汎用性に乏しいです。 レイトバインディングは、オブジェクト指向的要素を持ち、汎用性に長けています。ただし、そのコードを実行するまで、エラーが見つからないことがあるというところがあります。 ご自分で選択を・・・

situmonnsya
質問者

お礼

はい、わかりました。 う~~ん、自分だけで作るんでレイトバインディングの方がわかりやすそう! ありがとうございました。 また、よろしくお願いします。

関連するQ&A

専門家に質問してみよう