![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
宜しくお願いします。
仕様環境 Access(2002-2007)
請求書作成フォームを作りました。
(顧客情報を入力して印刷などができるスタンダードなものです)
フォームは「履歴」「新規」「検索」と3つのフォームで構成されています。
それぞれに他のフォームに移動出来るようにコマンドボタンがついていて、
例えば、「履歴フォーム」を開いて「新規」というボタンを押すと「新規フォーム」が
開く仕様です。
ただ、この場合、履歴フォームを開いたまま、新規フォームが開く感じになるので、
実質、画面上は2枚のフォームが開いています。(重なるので1枚に見えますが・・)
更に言えば、この状態から「検索」というボタンで検索フォームを開くと
3枚のフォームが開いた状態になります。
これを、例えば履歴フォームから新規フォームを開くと
履歴フォームが閉じる仕様にしたいと思っています。
また別のフォームを開くと直前まで開いていたフォームが
閉じる仕様にしたいと思っています。
まとめると、
”新しいフォームを開くと直前まで開いていたフォームは自動的に閉じられる。”
こんな感じにしたいのですが、何か方法はありますでしょうか。
複数枚(2枚以上)のフォームがあるのが鍵だと思います。
お知恵をお貸しください、宜しくお願いします。
(当方、マクロです)
![「access 直前まで開いていたフォーム」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/610450_5497c31217ad3/M.jpg)
No.1ベストアンサー
- 回答日時:
「常に1つのフォームだけが開いた状態」にしたいということでよろしければ、
以下のようなマクロを作成し、3つのフォームの『開くとき』イベントで
実行させれば、おおむねOKです。
※「おおむね」の理由については後述。
<アクション>
閉じる
<引数>
オブジェクトの種類: フォーム
オブジェクト名: =Screen.ActiveForm.Name
※先頭に「=」が必須となるのでご注意下さい。
(なお、入力後は自動的に角括弧で括られます)
「Screen.ActiveForm.Name」は、現在アクティブになっているフォームを
確認できるので重宝します。
但し、最初にフォームを開くときはアクティブなフォームがないために、
エラーになってしまうという問題があります(→上で「おおむね」とした理由)。
これを回避するために、新たにダミーのフォームを作成して、Autoexec
マクロか『起動時の設定』で開くフォームにはこれを指定した上で、
そのフォームをアクティブにしてから、ユーザーが最初に触るフォームを
開くようにしてください。
【ダミーフォームの『開くとき』イベントに組み込むマクロ】
全部で2つのアクションになります。
<アクション>
値の代入
<引数>
アイテム: Forms!ダミーフォーム.Visible
式: True
※ダミーフォームを強制的にアクティブ化
<アクション>
フォームを開く
<引数>
フォーム名: (「履歴」「新規」「検索」のどれか)
※最初に開くフォームをAutoexecマクロで開いている場合は、『開くとき』
イベントに組み込む代わりに、同マクロに直接、
『フォームを開く』(ダミーフォーム)
『値の代入』(Forms!ダミーフォーム.Visibleへの代入)
『フォームを開く』(「履歴」「新規」「検索」のどれか)
を組み込む形でも可です。
回答ありがとうございます。
できました!
なんか格好良くなりました、思った通りになりました。
ただ「検索」する時、パラメータクエリで検索しているので、
一時的に画面が全て消え、パラメータの画面だけ
(「顧客名を入力してください」みたいな)出るので違和感があるというか、
なにか淋しい感じがしますが、これは工夫でカバーしようと思います。
実は「メニュー画面(フォーム)」も作っており、
起動時の設定に組み込んであるので、
ダミーフォームを作るまでは至らなかったです。
むしろメニュー画面(フォーム)を残しつつ、「=Screen.ActiveForm.Name」も
使うという方向で考え、それも出来ました(笑)。
丁寧な回答ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Access(アクセス) access レポート 請求書について 2 2022/07/04 22:52
- Safari(サファリ) 大学の出欠確認でQRコードを読み取り、Googleフォームに送ってます。自分の携帯のQRコード読み取 1 2022/11/25 14:54
- その他(ブラウザ) Mycrosoft Edge フォームの履歴を完全に削除したい 3 2022/08/11 09:59
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) MSaccessのレポートを開く 2 2022/09/01 13:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access 複数フォームを...
-
レコードセットで得た結果をサ...
-
Access2000、これはいったい・...
-
access サブフォームにリストを...
-
チェックボックスでレコードの...
-
googleフォームでインストール...
-
初心者です。accessで請求書を...
-
サブフォームからメインフォー...
-
ACCSESS2013VBA フォームのレコ...
-
access 直前まで開いていたフォ...
-
AccessのFormのみをスクリーン...
-
access vbaのコンパイルエラー...
-
アクセス2000の終了時にバック...
-
Accessで、一覧からクリックし...
-
Access2003 タブコントロール...
-
アクセス2000を使っての顧...
-
AccessのDoCmd.ApplyFilterの使...
-
ACCESSでfilterとorderbyについて
-
ACCESS 削除 サブフォーム ta...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
Access 複数フォームを...
-
ACCSESS2013VBA フォームのレコ...
-
Access2000 サブフォームのReco...
-
(ACCESS)条件に応じて、テキ...
-
access サブフォームにリストを...
-
サブフォームが見えなくなる。
-
Accessのサブフォームから値を...
-
初心者です。accessで請求書を...
-
2回目に画面のレコードセットの...
-
サブフォームでのダブルクリッ...
-
アクセスで サブフォームの表...
-
アクセスでサブフォームのレコ...
-
googleフォームでインストール...
-
サブフォームのデータを保存す...
-
AccessのDoCmd.ApplyFilterの使...
-
サブフォームでフィルタしたデ...
-
Accessで、サブフォームのある...
-
Accessでのフォーム表示がうま...
おすすめ情報