• ベストアンサー

フォームの連携

現在フォームからコマンドボタンよりもう一つフォームを呼び出すような制御をしています。 そこで呼び出したフォームから確定、キャンセルを選び元のフォームへ戻るようにしているのですが、戻ったときにキャンセルを押した場合は呼び出したフォームのみをUnloadして、確定の場合は二つのフォームをUnloadになるように制御をかけたいのですがうまくいきません>< どのような制御をかければうまくいきますか??

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

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

私はよく呼び出されるフォームにIsCancelプロパティを作ります。 呼び出されるフォームに Private mIsCencel As Boolean と、そのGetプロパティ。 OKボタンを押された時のイベントに mIsCancel = False Cancelボタンを押された時のイベントに mIsCancel = True をセットしてフォームをUnload。 呼び出す側は、 呼び出されるフォームをモーダル表示。 フォームが戻ってきたら、 呼び出されるフォームのIsCancelプロパティが Trueだったら呼び出す側のフォームをUnloadします。 で、私はうまく行ってます。 こんな感じでどうですか?

go_osaruku
質問者

お礼

ありがというございました!! うまくいきました^^

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yamada_28
  • ベストアンサー率43% (21/48)
回答No.2

グローバル変数を1つ用意して、呼び出したフォームで押されたボタンを、呼び出し元のフォームで判定しては? たとえば、、、  0…確定ボタン  1…キャンセルボタン  2…xxxxボタン などなど。 No.1さんも回答されていますが、呼び出しフォームはモーダル表示することが前提です。 モーダル表示させないのであれば、、、タイマーイベント使うのかな?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESS フォームからフォームへの連携

    例えば  A_テーブル(フィールド:会員NO・顧客名・連絡  先)でのA_フォーム上でコマンドボタン「B」を  作成しています。ボタンをクリックすると   Docmd. OpenForm"B_フォーム" が実行されます。  実行され新しく開いた  B_フォーム(フィールド:管理NO・会員NO・備考) の会員NOの中に、その時開いていたA_テーブルの会 員NOが入っている状態にすることは可能でしょう  か? 乱文で大変申し訳ありません。 現在顧客管理のデータベースを作りはじめましたが なにぶん手探り状態ですので、今後ともよろしくお 願いいたします。 ( WindowsXP : Access2000)

  • [VB6] フォームを閉じる方法について

    お世話になります。 VB6で別フォームを起動する際の親フォームの閉じ方について 質問させてください。 呼び出し元フォームからShowメソッドで別フォームを起動すると、 呼び出し先のフォームでマウスのカーソルが砂時計表示になってしまいます。 (呼び出し元のフォームはUnload Meで閉じています。) [Form1の処理] Private Sub Button1_Click() Form2.Show Unload Me End Sub ※Form1は呼び出し元。Form2は呼び出し先。 原因について、どなたかご存知の方がいらっしゃいましたら、 ご教授願えますか?

  • エクセルのユーザーフォームについて

    パスワード入力用のしかけです。 ワークシートに配置したコマンドボタンを押してユーザーフォームを呼び出します。 Private Sub CommandButton1_Click() UserForm1.Show End Sub ユーザーフォームにはテキストボックスとコマンドボタンを配置しております。 テキストボックスのPasswordCharには * を設定しました。 Private Sub CommandButton1_Click() If StrConv(TextBox1.Text, vbLowerCase) = "abcd" Then MsgBox "OK!" Unload Me Else TextBox1.Text = "" TextBox1.SetFocus End If End Sub これで、ABCDまたはabcdと入力され、ユーザーフォーム上のコマンドボタンをクリックすれば、ユーザーフォームは消えます。 でも、いちいちマウスでクリックするのが面倒なのでEnterキー1回でユーザーフォームを消したいのです。 今でも、一度Enterキーを押すと、ボタンにフォーカスが移動するので、さらにEnterで消えますが、二度ではなくEnterキー1回でユーザーフォームを消すにはどうすればよいのでしょうか? ユーザーフォームは使ったことがないのでわかりません。 よろしくお願いします。

  • ユーザフォームの押下コマンドボタンの区別は?

    Excel2007のVBAについて質問します。初心者です。 コマンドボタンが2個あるユーザフォームを表示します。それぞれのボタンが押されると対応する処理をして制御がユーザフォームを表示した直後に戻るようになっています。 このとき、どちらのボタンが押されたのか区別する方法をご教示頂きたくよろしくお願い致します。

  • 複数フォームを1ボタンクリックで終了させる方法

    VB6.0 WindowsXP (症状) 複数フォームを1クリックで終了できずに困っています。 理由は他のフォームに移ったときにボタンの位置やテキストの内容を残しておきたい為にunloadさせずに、 Me.Hideだけでフォームを移動しているためだと思います。 終了のときは、下記のコードを用いて、終了させています。 標準モジュールに Public Sub sAllEnd() Dim myObject As Object For Each myObject In Forms Unload myObject Set myObject = Nothing Next End Sub をおいて、 各フォームには Private Sub Form_Unload(Cancel As Integer) Dim myResult As Integer myResult = MsgBox("終了します。" & vbCrLf & "よろしいですか?", vbOKCancel + vbQuestion, "終了確認") If myResult = vbCancel Then Cancel = True End If Call sAllEnd End Sub 終了メッセージのOKボタンを開いたフォームの枚数分だけクリックしないと終了できない状態です。 これを1クリックで終了できるようにするためにはどうしたら良いでしょうか? よろしくお願いします。

  • ユーザーフォーム

    エクセルでユーザーフォーム上にコマンドボタンを配置し、特定のコマンドボタンを押した時に、他のユーザーフォームを呼び出せるようにしたいのですが、どうしたらいいのでしょうか。

  • ユーザーフォームのコマンドボタンをマクロで操作したい

    Excel97でユーザーフォームを出しながらセルに入力できるようにしたいので、 http://www.ap.wakwak.com/~miko/Excel_Note/11-01_userform.htm#11-01-13 このサイトに書かれているように、ユーザーフォームにコマンドボタンを作成して、 ボタンのコードを  Private Sub CommandButton1_Click()   Application.GetOpenFilename  End Sub とし、「ファイルを開く」ダイアログを表示させてキャンセルするようにしたのですが、 この「コマンドボタンをクリックしてファイルを開くダイアログをキャンセルする」操作は 自動化できるのでしょうか? パソコンに慣れていない人用に作っているものですので、できるだけ使う人の操作を 少なくしたいのです。 ブックを開いた時にユーザーフォームを出すところまではできたのですが、 ユーザーフォームのコマンドボタンを自動的にクリックしてダイアログを キャンセルする方法がわかりません。 ご存知の方、どうぞよろしくご教授お願いいたします。 使用しているのは、 OS:Windows98SE ソフト:Excel97 です。

  • Excel VBA ある値が入力されたときだけユーザーフォームを出したいです

    ExcelのVBAを教えてください。 D15は、リストで入力する値を選択できるようになっています。 D15で選択された値によって、B15に反映されるようになっています。 たとえば、 D15の値をリストで105を選んだら、B15に「AAA」と入り、 D15の値をリストで109を選んだら、B15に「ccc」と入ります。 これらは、B15にIF関数が入っていて制御されています。 ところが、D15の値をリストで108と選んだ時だけ、B15に「BBB」と入る場合と「DDD」と入る場合の2パターンあり、これは人間の判断でどちらにするか考えるので、IF関数を使えません。 なので、 D15のリストボックスで108を選んだときだけ、 ユーザーフォームを出し(UserForm1.Show)、ユーザーフォームにBBBとDDDのコマンドボタンがあって、Tabでコマンドを選択し、Enterで確定し(マウスは使いたくない)、確定したコマンドの値をB15に反映させるようにしようと思いました。 ・・・が、ユーザーフォームを出すタイミングのVBAの組み方がわかりません。 D15の値をリストから選択する・・・というのは、他の方が作った仕組みなので変えることはできません。

  • Access2002 フォーム間のデータ受け渡し条件による動作分岐

    いつもお世話になっております。 未だ初心者のものです。 表題ではわかりにくいと思いますが、ああしか書けなかったのでお許し下さい。 本題ですが、人員の情報フォーム(フォームA)に、コマンドボタンを設け、他のフォーム(フォームB)を開く作りにしています。 コマンドボタンを作成するときに自動起動されるウィザードにしたがって、人員のIDとマッチするデータを表示するよう、コマンドボタンは設定されています。 フォームBの元になっているテーブルに、その人員のIDと付帯情報が入っていればフォームBはうまく表示されるのですが、まだ付帯情報が入っていない場合、当たり前ですが空白のフォームが現れます。 そこでご相談なのですが、フォームBの元テーブル(あるいはクエリ)にデータがない場合はフォームB用のデータ入力をさせるフォーム(フォームC)を表示させる様にはできませんでしょうか? これだけの情報ではイメージできないかも知れませんので、追加情報が必要であれば、逆質問をお願いします。 よろしくご回答のほど、お願いします。

  • 親フォーム名を取得するには?

    フォーム1を作り、さらにフォーム2を作り、 フォーム1にはめ込んで、フォーム2をサブフォームとしました。 そのフォーム2にコマンドボタンを作成しました。 そしてそのコマンドボタンをクリックしたときに、メッセージを表示させたいのですが、 内容は 「現在のフォームの親フォームはフォーム1です」です。 Private Sub コマンド0_Click() MsgBox Me.Name & "の親フォームは " & Me.Parent & "です" End Sub だと実行時エラー450になります。