開いているフォームをまとめて閉じるには

TIPSメインへ戻る

概要説明

複数のフォームが開かれている場合に、全てのフォームをまとめて閉じたい場合があります。 そこで開かれているフォームの数を調べて、自動的に順番にフォームをまとめて閉じる方法を説明します。

    (ポイント)
  • Formsコレクションで開いているフォームの数を調べる(フォームは開いた順に番号を持っている)
  • 大きな番号を持っているフォームから閉じてゆく(先頭から閉じるとフォーム番号がシフトしてしまう)
  • Formsステートメントでフォームの数だけCloseメソッドを繰り返す
  • 他の場面でも使えるように標準プロシージャとして作成する。

作成例

  1. 標準モジュールを作成する。
    データベースウインドウのモジュールウインドウを開き「メニュー」から「挿入」→「標準モジュール」でEditorが開く。次のプロシージャを記述する。

    (以下がコード)
    ' 開いているすべてのフォームを閉じる
    Sub CloseAllForms()

    ' フォームの番号を入れる変数
    Dim intLoop As Integer

    ' フォームの数だけ繰り返す
    For intLoop = Forms.Count - 1 To 0 Step -1

    ' intLoop番のフォームを閉じる
    DoCmd.Close acForm, Forms(intLoop).name
    Next intLoop

    End Sub

  2. フォームの「閉じる」ボタンのプロシージャに作成した標準プロシージャを呼び出す記述をする。

    (以下がコード)
    Private Sub Cmd_閉じる_Click()

    ' 標準プロシージャを呼び出し実行
    Call CloseAllForms
    ' メニューフォームは開いておく
    DoCmd.OpenForm "F_MENU"

    End Sub

  3. これで完成。フォーム数に関係なくまとめてフォームが閉じられます。しかしメニューフォームは開いておかないと困りますね。そのコマンドも記述しておきましょう。

(この項終わり)