これは、アクセス97の日以来の周りされています非常に長年のバグである:それは一度だけあなたの機能を発射する必要があり、それはまだあなたがフォームの名前と機能またはサブ名をパラメータ化することができます(約4-5バージョンのアクセス)。
ここソリューションは、単にあなたの行動に関するイベントに次の置き、あなたは=と、それに先行しなければならないだけで罰金
=PopUpProcess()
注意をすること、そしてだろう、フォーム修飾子を使用しないようにです接尾辞には角括弧()が必要です。
実際に行動を利用することができます。実行される関数は、現在スクリーン上でフォーカスを持っているフォームからのものになります。これは、関数の同じ名前を持つ異なるフォームを持つことができることを意味し、どのフォームにもフォーカスがある場合、その名前を持つ関数はそのフォームコードモジュールから実行されます。
さらに、フォームの1つがフォームコードモジュールでpublicとしてその関数を持たない場合は、標準コードモジュールの関数が使用されます。だから、あなたは9つのフォームを持っているかもしれません。それらはすべて、標準の標準コードモジュールで標準の関数を使います。しかし、10番目のフォームは特別なコードを実行する必要があるかもしれません。そのため、関数コードをpublicとしてフォームのコードモジュールに置き、標準コードモジュールのpublicの代わりに実行します。
このアプローチでは、多くの異なるフォームに適用される単一のカスタムメニューバーを作成できますが、多くのフォームではそのカスタムメニューバーから異なるコードが実行されます。これは、メニューコードを所属するフォームに配置することも奨励します。
問題を解決するには、フォームの修飾子を使用せず、上記の形式を使用してください。あなたは、たとえば、また、それらの機能から
=PopUpProcess(‘hello’)
をパラメータを渡し、のように関数を宣言することができます
注:
Public Function PopUpProcess(strParm as string)
を覚えておいてください、その関数や構文と何の全て上記の私は、アクセス2007のリボンでonアクションを使用する場合にも当てはまります。
この関数を呼び出す可能性のある他の関数がありますか? たとえば、フォームに空の関数(「Public Function DoesNothing」など)を追加し、eval( "forms( 'MyForm')。DoesNothing」)を呼び出すと、メッセージボックスが表示されますか? – anschauung