プロが教えるわが家の防犯対策術!

ACCESS97のVBAでアプリケーションを作成しています。
その中でメインメニューのボタンを押した時に新しいフォームとその中のサブフォームが表示されるような処理を行っているのですが、基本的にフォームは同じのを使いまわし、その中のサブフォームをイベントによって切り替えたいのです(例えばメニュー画面でAのボタンをクリックしたら新しいフォームとその中のAAのサブフォームが、メニューのBのボタンをクリックしたらBBのサブフォームが表示するなど)。どなたか良い方法を知っていましたら教えてください。

A 回答 (3件)

mnabeさんの回答に補足という形になりますが


最初は全部のサブフォームを非表示にしておいて
(デフォルトで表示させたいフォームがある時は
そのサブフォームを表示して)

フォームのボタンのクリック時に

サブフォームAA.Visible = True
サブフォームBB.Visible = False
サブフォームCC.Visible = False
サブフォームDD.Visible = False



という風に表示させたいサブフォームのみ表示
にして他を非表示にするっていうやり方です。
サブフォームAAの部分は貼り付けたサブフォー
ムの名前ではなくサブフォームコントロール名
(通常同じですが)にして下さい。


あとAccess97だとタブコントロールが使えます
ので、ご希望の処理はこちらでも可能かと思い
ます。これだとタブ毎にサブフォームを配置
するだけで、あとはタブのラベル部分をクリック
するだけで切り替えられますし。
    • good
    • 0

サブフォームコントロールに表示されるフォームを切り替えるコードの例です。



Private Sub コマンド1_Click()
 Select Case MsgBox("フォームを選択 OK→フォーム1 Cancel→フォーム2", vbOKCancel)
  Case vbOK
   Me.サブフォーム.SourceObject = "フォーム1"
   Me.サブフォーム.LinkChildFields = "ID"
   Me.サブフォーム.LinkMasterFields = "ID"  
  Case vbCancel
   Me.サブフォーム.SourceObject = "フォーム2"
End Select
End Sub
    • good
    • 1

サブフォームの数が少なければ...



 最初から全てのサブフォームを表示してしまっていて、ボタンクリックイベントで、サブフォームの表示を切り替えるのが簡単ですよ。
 少々遅いのが難点ですが...ね。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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


このQ&Aを見た人がよく見るQ&A