前提・実現したいこと
Accessで複数フォームを使用したシステムを作っています
各フォームにはコマンドボタンを配置して
-
Form_メニュー01
コマンドボタン [メニュー02呼出]
コマンドボタン [メニュー03呼出]
コマンドボタン [業務終了] - Accessを終了 -
Form_メニュー02
コマンドボタン [入力画面02_01呼出]
コマンドボタン [入力画面02_02呼出]
コマンドボタン [メニュー01呼出] -
Form_入力画面02_01
コマンドボタン [メニュー02呼出] -
Form_入力画面02_02
コマンドボタン [メニュー02呼出] -
Form_メニュー03
コマンドボタン [入力画面03_01呼出]
コマンドボタン [入力画面03_02呼出] -
Form_入力画面03_01
コマンドボタン [メニュー03呼出] -
Form_入力画面03_02
コマンドボタン [メニュー03呼出]
このような構成にしています
それぞれのコマンドボタンには
VBA
1DoCmd.OpenForm "呼び出したいフォーム名", , , "", , acDialog 2DoCmd.Close acForm, Me.Name, acSaveNo
と記載しています
発生している問題・エラーメッセージ
この方法だと
下図のように元フォームから次フォームを呼び出してもsubを終了せずどんどんネストしていってしまいます
(呼び出し履歴のハードコピー)
Accessを閉じずにフォーム移動を繰り返していると、スタック領域を占有していき、じきに
スタック領域が不足しています。
試したこと
ネストしていく作りであることを前提に
- フォームを呼び出す際は従来の方法を踏襲(フォーム開きっぱなし)
- 戻る際には元フォームを開くのではなく自分を閉じるのみ(元フォームに戻る)
実際のシステムではもっと深く階層化していき改修量がかなり多くなるため、前フォームをしっかり閉じて遷移していく方法が無いかと思案しています
前フォームを閉じる方法、こうしないと実現できない等のアドバイスがあればぜひ教えてください
補足情報
使用しているAccessのバージョン
- Microsoft Access 2010(32bit)
- Microsoft Access 2019(64bit)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 06:29