• ベストアンサー

アクセス 起動時に2つのフォームを表示したい

Form_Openのイベントプロシージャーで DoCmd.OpenForm でもう一つのフォームを開くしかないですか? 起動時の設定で二つのフォームを指定することは不可能でしょうか?

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

現在はAccess2010でいえば、オプション/カレントデータベース/フォームの表示で設定されていると思いますが、 代わりにマクロAutoExecを作成し、実行内容として「プロシージャの実行」、プロシージャの名前を例えばAutoOpen()と設定します。 標準モジュールを挿入し、Function AutoOpen()を定義し、その中でDocmd.OpenFormでお好きな数だけフォームを開く設定を行えば良いです。Subではダメで、かならずFunctionに設定する必要があります。戻り値の型等は適当で良いです。 標準モジュールの方は任意の名前で良いのですが、マクロの方はAutoExecにしないと認識されません。 先ほどまで不動作で悩んでいたのですが、入力ミスでAuteExecになっていました。トホホ...

PTKIJNDIFUMG
質問者

お礼

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

その他の回答 (1)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

1、一つ目のフォームを開いたイベントを掴まえて、次のフォームを開く Private Sub Form_Load() DoCmd.OpenForm "フォーム名" End Sub 2、見出しだけのフォームを作り、これのフッターに複数のフォームを   サブフォームとして配置する 

PTKIJNDIFUMG
質問者

お礼

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

関連するQ&A

  • ACCESS非表示でフォームのみ表示して起動したい

    ACCESS2010のオプションのカレントデータベースのフォームの表示を(表示しない)にして、AutoExecマクロから以下のMain()プロシージャを呼び出して 起動時にフォーム(メイン画面)を表示しています。 ----------------------------------------------- Function Main() As Integer 'メイン画面の表示 DoCmd.OpenForm "メイン画面", acNormal Main = 1 End Function ----------------------------------------------- このままでは、ACCESSファイル(.accdb)をダブルクリックして実行するとメイン画面とその背後にACCESSアプリケーション自体が表示されてしまいます。 そこで、Form_Openイベントプロシージャに ----------------------------------------------- Dim rc As Long rc = ShowWindow(Application.hWndAccessApp, SW_SHOWMINIMIZED) ----------------------------------------------- を記述したのですが、ACCESSアプリケーションは表示されなくなったのですが、フォーム(メイン画面)も表示されなくなってしまいました。 フォーム(メイン画面)だけ表示してACCESSアプリケーションは表示されないようにしたいのですがどのようにすればよいのでしょうか。 よろしくお願いします。

  • アクセス起動時のフォームのサイズの指定方法

    アクセス起動時にフォームを開いた時に表示されるフォームのサイズは どこで設定されているのでしょうか? Form_Loadなどには DoCmd.MoveSizeで何も設定していないのに 5cm×5cm位のサイズでフォームが開かれます。 デザインビューにして、矢印でぐいーんとフォームの縦横を伸ばしても、 アクセスを再起動してフォームを開くと5cm×5cm位のサイズでフォームが開かれます。 デザインビューにして、矢印でぐいーんとフォームの縦横を伸ばして保存して、 ナビゲーションウインドウからフォームを開いたら、 デザインビューで設定したサイズで開かれます。 起動時の設定に該当のフォームを設定してる状態で、 アクセスを起動したときに、自分の指定したサイズでフォームを開くには Form_LoadでDoCmd.MoveSizeの設定をするしかないのでしょうか? なぜアクセスを閉じるとフォームのサイズがリセットされるのか教えてください。 アクセス2010です。

  • ACCESSのエラー

    タイトルのとおりなのですが、突然下記のエラーがでるようになりました。 「イベント プロパティに指定した式 アクティブ時でエラーが発生しました:Returnに対するGoSubがありません」 エラーの発生するタイミングは、 (1)ACCESS起動時(メインフォーム立ち上がる前) エラーメッセージに対して「OK」すると  メインフォームが開きます。 (2)メインフォームから、別のフォームを開こうとすると(Docmd.Openform)エラーメッセージが出て  フォームが開かない。 なお、メインフォームのプロパティ(アクティブ時)には、下記を書いています。 Public Function サイズ元に戻る() 'フォームを元のサイズに DoCmd.Restore End Function 今日の午前中までは、普通に使えておりました。 モジュール等何も変更はしていません。 また、メインフォームのモジュールを確認すると(Alt+F11、デザインビューからイベントプロシージャ等)エラーが出なくなります。 ただ単に破損しているだけなのでしょうか?

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

    一つは全画面表示(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は、ノーマルな表示(全画面でも最小化でもない) にしたいのですが、不可能なのでしょうか?

  • アクセスvba 読み込み時 開く時

    アクセスのフォームのイベントで、 読み込み時(Form_Load)と、開く時(Form_Open)では、 どちらが先に起動するのですか?

  • [Access2000] フォーム間で値の受け渡し

    フォームから、DoCmd.OpenFormを使って、 別のフォームを子画面として開くようにしています。 そのときフォーム間で、Functionの引数と戻り値のような感覚で 値の受け渡しをしたいと思っています。 値をわたす方は、OpenFormの引数のいちばん最後にある OpenArgsを使うことでうまく解決できたのですが、 値を返す方のやり方がイマイチわかりません。   DoCmd.OpenForm "フォーム名",,,,OpenArgs     (カンマの数が間違ってるかも…とりあえずテキトーです) という記述方法の他に、   DoCmd.OpenForm("フォーム名",,,,OpenArgs) という記述もできるようなんですが、そのようにすると 「=」をつけろ、というようなエラーがその場で出ます。 MsgBoxでも同じようなことが起こりますが、 MsgBoxだと「vbOk」やら「vbCancel」やらを返してくれるので OpenFormでも似たようなことができるのかな…と思うのですが。

  • アクセス2002 VBA

    フォームを保存せずに閉じたいのですが、 当該フォームの「閉じる時」プロパティーにイベントプロシージャを設定し、 Private Sub Form_Close() DoCmd.Close acForm, "フォーム1", acSaveNo End Sub と記述しました。  ところが、実行すると 「Close アクションの実行はキャンセルされました。」とエラーになってしまいました。  間違いの指摘をお願いします。

  • アクセス2013 フォームが開かない

    お世話になります。 アクセス2013で、フォームを作成したのですが、 突然フォームが、レイアウトビューもしくはデザインビューでしか 開かなくなりました。 デザインビューで起動してから、表示ボタンを押すとフォームは 表示されます。 再起動等はしましたが、状況かわらず。最適化修復も、状況変わらず。 問題のフォームのFORMLOADでSTOP記載し、docmd.openform で 起動しても、そこまで行きません。 VBAのコンパイルをしてもエラーは出ません。 正直、まったく原因が想像できなくて、悩んでいます。 どなたかご存知ではありませんか? よろしくお願いします。

  • 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をひらきたいのです。 よろしくお願いします。

  • Access:ストアドプロシージャの作成後にそれをレコードソースとしたフォームを開きたい

    WINDOWS XP ACCESS 2002 MSDE を使用しています。 ADOでストアドプロシージャを作成して 作成したストアドプロシージャをレコードソースとしたフォームを開こうとしたところ エラーが発生してしまいます。 以下、ソースを大まかに示します '------------------------------------------------- sub test_Click() On Error GoTo err_test Dim Dname As New ADODB.Connection Dname.Open Dname.Execute "CREATE PROCEDURE q AS " + vbCrLf + _ " SELECT a FROM b WHERE (c = 1) ORDER BY d DoCmd.OpenForm "F" , Exit Sub err_test: MsgBox "err : " + Err.Description End Sub '------------------------------------------------- 開こうとしているフォーム"F"のレコードソースには 作成したストアドプロシージャ"q" を指定しています。 DoCmd.OpenForm で以下のエラーが発生します。 エラー番号は"2580" メッセージは"このフォームまたはレポートで指定されているレコード ソース 'q' は存在しません。" Access再起動して、ストアドプロシージャを作成せずにフォームを開くと フォームは開けるのですが、 作成した直後にフォームを開きたいと考えております。 なにが原因なのでしょうか? ご回答のほど、何卒よろしくお願いいたします。

専門家に質問してみよう