• 締切済み

アクセスのVBAなんですけど

アクセスのVBAでフォームからフォームへ値を渡すことはできますか?具体的にいうとあるフォームでコンボボックスから選択し、OKボタンで次のフォームを開くのですが、初めのコンボボックス(ちなみに5つ選択項目があります)で選んだ条件でフォームの表示内容を変更させようと思っています。 今のところ、選択した項目を一時的にテーブルに保存して、新しいフォームが開くときにテーブルから値を取得してやるのか・・・・と考えているのですが、まどろっこしいので・・・・・よろしくお願いします。

みんなの回答

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.4

コンボボックスで選ぶ値がテキスト型なら(そうでなければ、テキスト型に変換して)、OpenArgs プロパティ を利用するのはいかがでしょうか? 具体的には、元のフォームで DoCmd.OpenForm FormName:=”新たに開くフォーム名”, OpenArgs:=Me!コンボボックス名 として、新しいフォームを開き、 新たに開いたフォームの Open イベントで、OpenArgs の値を元に処理を行えば、わりと簡単だと思いますが。

  • Kalen_F
  • ベストアンサー率25% (2/8)
回答No.3

最初のフォームのコマンドをクリック時のプロシージャに、 ▲新たに開くフォーム名: form2 ▲選択したコンボボックス名: ret ▲form2の受取側テキスト名: res Docmd.OpenForm "form2" Forms!form2!res.Value = Me!ret.Value で上手く出来るハズです! もしその後に最初のフォームを閉じてしまいたいのでしたら、最後にCloseするよう書いてしまいます。

arex_santa
質問者

お礼

お返事有難うございます。 基本ができていないせいで、Form!form2!res.Valueという書式を知りませんでした。これから役立ちそうです。でもこれだと表示されるラベルの値は変更されるのですが、元のCaptionの値が変更されず、新たに開くフォームでの If lblA.Caption="文字列" then という条件が一致しません????? のでNO1さんのように共通モジュールに値のSetとGetの関数を自作しました。

  • qwedesu
  • ベストアンサー率31% (6/19)
回答No.2

開かれるフォームのLoadイベントで Private Sub Form_Load()  If 元のフォーム名.コンボボックス1=1 then ....... ってな感じです。

arex_santa
質問者

お礼

有難うございます。 最初この方法でやろうと思ったのですが、元のフォーム名を書くと、変数が宣言されていないとエラーになってしまうのです。

  • SpeedKing
  • ベストアンサー率50% (6/12)
回答No.1

はじめまして。 私はフォーム間の値の受け渡しで良く使うのは以下の2つです。 1.フォームを開いて、例えばテキストボックスに代入する 2.フォームのForm_Openイベント時に前のフォームの値を取ってきてテキストボックスに代入する 1の場合、開くフォーム名をform1とすると form1.テキストボックス名.value=me.コンボボックス名.value 2の場合、元のフォーム名をform0とすると me.テキストボックス名.value=form0.コンボボックス名.value でテキストボックスに値を格納できます。 共通Module化を考える場合には以下のようなもので如何でしょうか。OKボタンのクリックイベントに仕込みます。 Public Function OpenForm( _ FormName As String, _ '開くフォーム名 InputControl As String, _ '代入するコントロール名 GetValueForm As String, _ '元のフォーム名 GetValueControl As String, _ '値を取るコントロール名 Optional GetValueFormClose As Boolean = False) 'GetValueFormCloseは元フォームを閉じるかどうかの指定 'フォームを開く DoCmd.OpenForm FormName '開いたフォームに値を代入する Forms(FormName)(InputControl) = _ Forms(GetValueForm)(GetValueControl) '元フォームを閉じる指定があれば閉じる If GetValueFormClose Then DoCmd.Close acForm, GetValueForm End If End Function (エラーハンドルは記載してません)