- ベストアンサー
Access2013 VBA 複数の画面の遷移
- フォームの遷移における便利な方法とは?
- Access2013のVBAを使用して、複数の画面を遷移する際に便利な方法を紹介します。
- 公開変数を使用して、遷移元の画面名を保存し、戻るボタンで画面を表示する方法があります。しかし、より便利な汎用的な方法はあるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足の意味を読み取れていないような気がしますのでご参考まで。 「履歴としての戻る」と 「メニュー階層の上に戻る」をごっちゃに考えているような? 別解になってしまいますが、 Access2010から利用できるナビゲーションフォームも検討されては? http://msdn.microsoft.com/ja-jp/library/office/ff851947%28v=office.14%29.aspx
その他の回答 (2)
- NotFound404
- ベストアンサー率70% (288/408)
たとえば呼び出し元で DoCmd.OpenForm "フォーム名", OpenArgs:=Me.Name と自身の名前をOpenArgsに渡します。 呼び出された側では If Me.OpenArgs <> "" Then If CurrentProject.AllForms(Me.OpenArgs).IsLoaded Then Forms(Me.OpenArgs).SetFocus Else End If End If みたいなこととか・・・。 勘違い回答かも。ご参考まで。
補足
ご回答ありがとうございます。 そうするとですね、以下のような画面の遷移があるとするとおかしくなる場合があるんです。 Aメニュー→Bメニュー→Cメニュー→フォーム1 Aメニュー→Bメニュー→Cメニュー→フォーム2 Aメニュー→Bメニュー→Cメニュー→フォーム3 ・Cから、フォーム1に行き、Cに戻り、フォーム2に行き、Cに戻る。 すると、CからBに戻れない。戻るボタンを押すと、フォーム2に行ってしまう。 こういうバグを治したロジックってどうすればいいのかな・・・と思ったのです。
- ShowMeHow
- ベストアンサー率28% (1424/5027)
必ず元フォームに戻るなら、モーダルで開くとか。 WindowModeがacDialogだったかな?
お礼
ありがとうございます。 上に戻る場合は、戻る上の画面の名前をそのままベタ書きでもいいのでしょうか。 履歴としての戻るの場合には、その前の画面の名前を取得するので、Form.OpenArgsとか、Screen.ActiveFormなんかで取得ができると思いますが。 このナビゲーションフォームは、全てのフォームが完成してから作成するような感じでしょうか?