フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう?

このQ&Aのポイント
  • フォームを表示してからメッセージボックスが表示される方法を教えてください。
  • ナビゲーションウインドウからフォームを開くと、メッセージボックスが先に表示されてしまいます。
  • フォームの表示が最初にされるようにするにはどうすればいいですか?
回答を見る
  • ベストアンサー

フォームを表示してからメッセージボックスを表示する

メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。 ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、 今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう? Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" End Sub だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを開いたときのイベントは複数あるようで、 Private Sub Form_Activate() MsgBox "Form_Activate" Debug.Print "Form_Activate" End Sub Private Sub Form_Current() MsgBox "Form_Current" Debug.Print "Form_Current" End Sub Private Sub Form_GotFocus() MsgBox "Form_GotFocus" Debug.Print "Form_GotFocus" End Sub Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" Debug.Print "Form_Open" End Sub Private Sub Form_Load() MsgBox "Form_Load" Debug.Print "Form_Load" End Sub をすると、 ・Form_Load ・Form_Activate ・Form_GotFocus ・Form_Open ・Form_Current の順に開きますが、やはりフォームが最後に表示されてしまいます。 どうにかして先にフォームを表示させる方法はないでしょうか? ご回答よろしくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

>メッセージボックスが表示される前に、フォームを表示させたいです。 何故こんな事がしたいのか疑問ですが これで近いことが出来るかも。 フォームの『タイマー間隔』欄に、5000 その上の『タイマー時』イベントの内容は MsgBox "5秒経過" Me.TimerInterval = 0

GEKITBUHN
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

Private Sub Form_Open(Cancel As Integer)   Me.Visible = True ' ★   MsgBox "Form_Open" End Sub ★行を追加してどうなりますか。 なお、イベントの発生順は Form_Open Form_Load Form_Activate Form_Current の様な気がします。 詳しくは以下を参照ください データベース オブジェクトのイベントの順序 http://office.microsoft.com/ja-jp/access-help/HA010238988.aspx

GEKITBUHN
質問者

お礼

ありがとうございました。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

それかもう考え方を変えて、 標準モジュールに以下を書き、これを実行。 Sub F_open()     MsgBox "開けゴマ"     DoCmd.OpenForm "フォーム2"     MsgBox "開いたよ" End Sub 二つのメッセージボックスの出現タイミングの違いをお楽しみください。

GEKITBUHN
質問者

お礼

ありがとうございました。

関連するQ&A

  • Current、Openがそれぞれ2回発動する

    テーブルには適当なデータが入っています。 フォーム1を作り、コマンドボタンを1個だけ設置して、フォーム2を開くようにするために Private Sub コマンド0_Click() DoCmd.OpenForm Form_フォーム2.Name End Sub としました。 フォームはテーブルをレコードソースとしています。 フォーム2のモジュールに Private Sub Form_Current() Debug.Print "Form_Current" End Sub Private Sub Form_Open(Cancel As Integer) Debug.Print "Form_Open" End Sub としたのですが、結果は Form_Open Form_Current Form_Open Form_Current になります。 よって、二つのイベントの中にいくつかのプロシージャーが入っているのですが 2回ずつ実行されてしまい、求めている結果と異なってしまいます。 これを回避する方法はありますか? どうしてもフォーム1のコマンドボタンを押して、フォーム2をひらきたいのです。 よろしくお願いします。

  • フォーム1が開いているのならMsgBoxを表示

    Sub マクロ() If フォーム1が開いているのなら Then MsgBox "フォーム1は開いています" End If End Sub アクセスで上記の事をやりたいのですが、コードを教えていただけますか? Sub test() Dim myForm As Form For Each myForm In Forms Debug.Print myForm.Name Next End Sub で、フォームをループできるのですが、いちいちループさせずに、フォーム1だけをつかんで、 起動している(開いている)ならメッセージボックスを表示させたいです。

  • フォームのイベントを標準モジュールから呼び出す

    フォームのイベントを標準モジュールから呼び出す事は出来ないのでしょうか? ちなみにアクセスです。 例えば、 Private Sub Form_Load() MsgBox "test" End Sub というのはフォームを開いたときにしか発生しないですよね。 でもフォームを開いている状態でForm_Loadと全く同じ事をしてほしい時は どうすればいいですか? 標準モジュールで Sub a() Call Form_フォーム1.Form_Load End Sub としてみましたが、メソッドまたはデータ メンバが見つかりません。 (Error 461)になりました。 MsgBox "test" だけなら、 Sub a() MsgBox "test" End Sub にすりゃいいじゃん!って思われがちですが、 実際はForm_Loadイベントにはたくさんのコードが書かれています。 標準モジュールからイベントの呼び出しを教えてください。

  • Picture1.Printとしてもpicture1には何も表示されません

    Private Sub Form_Load() Call kansu End sub --------------------------- Private Sub kansu() a="文字" Picture1.Print a End sub --------------------------- のように、pictureコントロールに 文字を入れる処理をする関数を呼んでいるのですが、 Formが表示されてもpicture1には何も表示されません。 Msgboxを入れておくとメッセージボックスが出るので 呼び出されてはいるようなのです。 この関数をCommand1_Click()などから呼ぶとpicture1コントロールに ちゃんと表示されます。 どうすればよいのでしょうか?

  • vbaで帳票フォームで開きたい アクセス

    vbaでフォームを開くときに 既定のビューを指定してるのですが 指定したとおりになりません。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム End Sub としてもデータシートビューで開かれてしまいます。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム MsgBox Me.DefaultView End Sub とすると、1が返るのに やっぱりデータシートビューになってしまいます。 なぜでしょうか? エラーにもなりません。

  • フォームのサイズが指定した値にならない

    accessです。 新規にフォームを立ち上げて Private Sub Form_Open(Cancel As Integer) DoCmd.MoveSize , , 10000, 10000 Debug.Print Me.InsideHeight Debug.Print Me.InsideWidth End Sub としました。 そうすると戻り値がそれぞれ 7365 17025 なのですが、 なぜ、 DoCmd.MoveSize , , 10000, 10000 で、10000を設定してるのに、 その通りにならないのでしょうか?

  • 2つのメッセージボックスを表示している間、コードを待機させる方法

    2つのメッセージボックスを表示している間、コードを待機させる方法  今晩は,いつも勉強させていただいております。 質問させていただきます。どうぞよろしくお願いいたします。  開発環境はXP+VB2008になります。  Form_MsgBox1とForm_MsgBox2上での操作が完了するまで Form1のコードを中断したいのですが、そのような事って 可能なのでございましょうか。。。??  そもそも中断させる方法が分からなかったのですが、 先の質問でご親切にShowDialogをお教えいただけましたので 【Form1】  Private Sub Button_Click    :   Dim f As New Form_MsgBox1   If f.ShowDialog(Me) = DialogResult.OK Then   Else    Exit Sub   End If    :  End Sub 【Form_MsgBox1】  Private Sub Form_MsgBox1_Load    :  Dim f As New Form_MsgBox2  f.Show()    :  End Sub といたしましたところ、Form_MsgBox2の操作が できなくなってしまいました。。 (それ以外は全部大丈夫でございます) Form_MsgBox1とForm_MsgBox2を交互に操作している間、 Form1だけ待機させて操作できなければよいのですが。。  検索いたしておりますと、複数のShowDialogが可能か どうかといったQ&Aがいくつか見つかるのですが、 いまいちよく分かりませんでしたorz  何かよさそうな方法がひらめかれるようでございましたら、 是非ともアドバイスいただきたくお願い申し上げます。  もしお詳しい方がいらっしゃいましたら,どうぞよろしく お願いいたします。

  • アクセスフォームのサイズの調整について

    一つは全画面表示(Maximize)で開きもう一つは普通の表示(Restore)で開くには? フォーム1とフォーム2があります。画像をご覧ください。 フォーム1は Private Sub Form_Load() DoCmd.Maximize End Sub で、 フォーム2は Private Sub Form_Load() DoCmd.Restore End Sub としてます。 フォーム1にコマンドボタンを設置して、 Private Sub フォーム2を開く_Click() DoCmd.OpenForm "フォーム2" End Sub として、フォーム2を開くのですが、 フォーム2が開くとフォーム1まで、元の大きさに戻ってしまいます。 行いたいことは、 フォーム1は全画面表示、フォーム2は、ノーマルな表示(全画面でも最小化でもない) にしたいのですが、不可能なのでしょうか?

  • フォームを開く時のイベント処理

    Visual Basic 6.0 あるフォーム読込時イベント[Private Sub Form_Load()]で コマンドボタンにフォーカスを移動しようとしたら、エラーしてしましました。 Private Sub Form_Load() CommandButton.SetFocus ’プロシージャの呼び出し、または引数が不正です End Sub Form_Open や BeforeUpdate ? 開いた後にフォーカスをセット出来る イベント処理は無いでしょうか? ご教授願います。

  • VB6のform Load

    Private Sub Form_Load() Form1.ScaleMode = 0 Form1.Scale (-10, 10)-(10, -10) Form1.Line (-10, 0)-(10, 0) Form1.Line (0, -10)-(0, 10) End Sub とやって座標画面を作ろうとしましたが Lineが表示されません。 仕方が無いので Private Sub Form_Load() Form1.ScaleMode = 0 Form1.Scale (-10, 10)-(10, -10) End Sub Private Sub Form_Activate() Form1.Line (-10, 0)-(10, 0) Form1.Line (0, -10)-(0, 10) End Sub とやりました。 そういうものだとあきらめるしかないのでしょうか?

専門家に質問してみよう