- ベストアンサー
サブフォームの切り替え方を教えてください
ACCESS97のVBAでアプリケーションを作成しています。 その中でメインメニューのボタンを押した時に新しいフォームとその中のサブフォームが表示されるような処理を行っているのですが、基本的にフォームは同じのを使いまわし、その中のサブフォームをイベントによって切り替えたいのです(例えばメニュー画面でAのボタンをクリックしたら新しいフォームとその中のAAのサブフォームが、メニューのBのボタンをクリックしたらBBのサブフォームが表示するなど)。どなたか良い方法を知っていましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
mnabeさんの回答に補足という形になりますが 最初は全部のサブフォームを非表示にしておいて (デフォルトで表示させたいフォームがある時は そのサブフォームを表示して) フォームのボタンのクリック時に サブフォームAA.Visible = True サブフォームBB.Visible = False サブフォームCC.Visible = False サブフォームDD.Visible = False ・ ・ ・ という風に表示させたいサブフォームのみ表示 にして他を非表示にするっていうやり方です。 サブフォームAAの部分は貼り付けたサブフォー ムの名前ではなくサブフォームコントロール名 (通常同じですが)にして下さい。 あとAccess97だとタブコントロールが使えます ので、ご希望の処理はこちらでも可能かと思い ます。これだとタブ毎にサブフォームを配置 するだけで、あとはタブのラベル部分をクリック するだけで切り替えられますし。
その他の回答 (2)
- ARC
- ベストアンサー率46% (643/1383)
サブフォームコントロールに表示されるフォームを切り替えるコードの例です。 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
- mnabe
- ベストアンサー率33% (427/1283)
サブフォームの数が少なければ... 最初から全てのサブフォームを表示してしまっていて、ボタンクリックイベントで、サブフォームの表示を切り替えるのが簡単ですよ。 少々遅いのが難点ですが...ね。