重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

下記のようなことが可能であれば、方法をご教授願います。

まず、構造
フォーム2つ
1.メニュー…コマンドボタン2つ(BT11とBT12)
2.メイン  …コマンドボタン3つ(BT21とBT22とBT23)

やりたいことは、
BT11とBT12のクリックイベントでどちらもメインフォームを表示

ただし、
BT11クリック時はacFormAddでメインフォーム上にBT21、BT23だけを表示し、
BT12クリック時はacReadOnlyメインフォーム上にBT22、BT23だけを表示
です。

フォームの表示は出来ましたが、
コマンドボタンの表示/非表示が切り替わりません。

sub BT11_Click()
1行目 DoCmd.OpenForm "フォーム名", acNormal, , acFormAdd, acDialog
2行目 Forms!メインフォーム!BT21.Visible = True
end sub

BT11をクリックしたときは、1行目でとまっているようです。
メインフォームを閉じるときに2行目を実行しようと
するようで、メインフォームがないというエラーがでます。

宜しくお願い致します。

A 回答 (2件)

> BT11をクリックしたときは、1行目でとまっているようです。



DoCmd.OpenFormで第5引数に「acDialog」を指定しているために、そのような動作に
なっているものと思います。
(これを指定すると、MsgBoxなどのように、そのフォームを閉じるまで、次の処理が実行
 されなくなります)

ですので、まずはその引数を省略して
  DoCmd.OpenForm "フォーム名", acNormal, , acFormAdd
とした上で、ポップアップで表示したいということでしたら、当該フォーム(BT21を設置して
いるフォーム)のデザインビューで、『その他』タブの『ポップアップ』の値を「はい」に、『書式』
タブの『サイズ自動修正』を「はい」に、同タブの『自動中央寄せ』を「はい」に、それぞれ
指定して下さい。

また、当該フォーム表示中は他のフォームなどを触れなくしたい場合は、その下の『作業
ウィンドウ固定』も「はい」にします。

さらに、フォームの外見をMsgBoxなどと同様にしたい場合は、『書式』タブの各項目を
以下のようにしてみてください(一例):

 『スクロールバー』:「なし」
 『レコードセレクタ』:「いいえ」
 『移動ボタン』:「いいえ」
 『区切り線』:「いいえ」
 『境界線スタイル』:「ダイアログ」
 『コントロールボックス』:「いいえ」
 『最小化/最大化ボタン』:「なし」
 『閉じるボタン』:「いいえ」

※他の設定項目の内容により、設定が無視される項目もありますが、ここではその
  項目の設定もそのまま載せさせていただきました(汗)
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
すごく丁寧なご説明、ありがとうございます。
また、書いていなかったにもかかわらず

>ポップアップで表示したいということでしたら、当該フォーム(BT21を設置して
>いるフォーム)のデザインビューで、『その他』タブの『ポップアップ』の値を「はい」に、『書式』
>タブの『サイズ自動修正』を「はい」に、同タブの『自動中央寄せ』を「はい」に、それぞれ
>指定して下さい。

>また、当該フォーム表示中は他のフォームなどを触れなくしたい場合は、

と、まさにお察しの通りです。

お二人のご回答を合わせて、希望通りのことができました。
本当にありがとうございました。

お礼日時:2012/05/16 14:49

DoCmd.OpenFormの引数OpenArgsに値を持たせ、フォーム・メイン側Form_Loadあたりで制御するのも一つの手かと思います。

この回答への補足

お礼が遅くなり申し訳ありません。
ありがとうございました。

「OpenArgs」が何か知らず使ったことがなかったので、調べました。
こんな感じで、いつも必要なことだけ調べて使用しているので、またひとつ勉強になりました。

お二人の回答を合わせて、希望通りのものができました。
本当にありがとうございました。

補足日時:2012/05/16 16:26
    • good
    • 0
この回答へのお礼

補足とお礼間違えてしまいました。
すみません。

お礼日時:2012/05/16 16:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す