2017-12-24 16 views
0

私はFrm_Dairyと呼ばれる形式とFrm_Bakery変数VBA

私は値を保持し、それぞれのフィールドを持っていると呼ばれるフォームを持っているとして保存されたコードの行を実行する方法。各フォームのフィールドの名前は同じですが、フィールドは酪農場またはベーカリーの名前の冒頭にあります。

例: Frm_Dairy.Dairy_Sales または Frm_Bakery.Bakery_Sales私はこのコードを実行する

: M_Salesの=のFrm_Dairy.Dairy_Sales

これは十分に簡単ですが、私は第一に、プログラムをしたい場合どんな形が活発であるか把握しますか?

この場合M_Form = "乳製品"」

M_Formは= "乳製品" のであれば、コードは次のようになります。 M_Codeは= "M_Sales = Frm_" & M_Form & "" & M_Form &「_Salesは」

今どのように私は私が十分な詳細とあなたの助けに感謝してこの質問をしたと思っているM_Sales

に格納されたデータを取得するためにM_Code変数を実行してください!

+0

なぜ2つのフォームがありますか?どの表にフォームがバインドされていますか?どのテーブルにデータを保存していますか? – June7

答えて

1

特定のフォームが開いている場合を検討し、決定するには:

If CurrentProject.AllForms("Dairy").IsLoaded Then 
... 
ElseIf CurrentProject.AllForms("Bakery").IsLoaded Then 
... 
End If 

をあなたがフィールドを参照する必要性を説明し、おそらく本当にコントロールを参照する必要があります。

フォームおよびコントロール参照を動的に構築するいくつかの方法。 1つは、フォーカスするフォームにフォーカスがあると仮定して、ActiveFormプロパティを使用します。

Debug.Print Screen.ActiveForm.Controls(Screen.ActiveForm.Name & "_Sales")

別の手順の文字列引数としてフォーム名を渡すことであろう。コントロールは、フォーム名のプレフィックスを持っていない場合

Debug.Print Forms(strForm).Controls(strForm & "_Sales")

が簡単だろう。

+0

ありがとうございます。これは、私が回避策として行ったことに近いです。私の問題は、どのフォームがアクティブであるかを判断することではありません。私は、活動している部門に基づいて100行のコードを実行する1つの機能を作ろうとしています。コード行は、フィールドを参照する各コード行がアクティブな部門で始まる点を除き、同じです。 – Mark

+0

私はまた、12の異なる部門があり、各部門には12のフィールドがあることを言及する必要があります。 – Mark

+0

改訂版の回答を参照してください。 – June7