OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.244099
  • 閲覧数478
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 53% (17/32)

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

回答 (全4件)

  • 回答No.1
レベル6

ベストアンサー率 50% (6/12)

はじめまして。 私はフォーム間の値の受け渡しで良く使うのは以下の2つです。 1.フォームを開いて、例えばテキストボックスに代入する 2.フォームのForm_Openイベント時に前のフォームの値を取ってきてテキストボックスに代入する 1の場合、開くフォーム名をform1とすると form1.テキストボックス名.value=me.コンボボックス名.value 2の場合、元のフォーム名をform ...続きを読む
はじめまして。
私はフォーム間の値の受け渡しで良く使うのは以下の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
(エラーハンドルは記載してません)


  • 回答No.2
レベル7

ベストアンサー率 31% (6/19)

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

Private Sub Form_Load()

 If 元のフォーム名.コンボボックス1=1 then
.......

ってな感じです。
お礼コメント
arex_santa

お礼率 53% (17/32)

有難うございます。
最初この方法でやろうと思ったのですが、元のフォーム名を書くと、変数が宣言されていないとエラーになってしまうのです。
投稿日時 - 2002-03-31 11:10:40
  • 回答No.3
レベル8

ベストアンサー率 25% (2/8)

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

▲新たに開くフォーム名: form2
▲選択したコンボボックス名: ret
▲form2の受取側テキスト名: res

Docmd.OpenForm "form2"
Forms!form2!res.Value = Me!ret.Value

で上手く出来るハズです!

もしその後に最初のフォームを閉じてしまいたいのでしたら、最後にCloseするよう書いてしまいます。
お礼コメント
arex_santa

お礼率 53% (17/32)

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

ベストアンサー率 63% (325/508)

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

具体的には、元のフォームで
DoCmd.OpenForm FormName:=”新たに開くフォーム名”, OpenArgs:=Me!コンボボックス名
として、新しいフォームを開き、
新たに開いたフォームの Open イベントで、OpenArgs の値を元に処理を行えば、わりと簡単だと思いますが。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ