Microsoft Access 掲示板

指定する2つ以外のフォームを全て閉じたい

2 コメント
views
4 フォロー

お世話になります。
access初心者で申し訳ありませんが、
教えて頂ければと思います。

現在
フォームA(メニュー)
フォームB(入力用)

上記の他にフォームC以降複数のフォームがあります。

フォーム上で全て入力する仕組みで、フォームAからフォームC以降を開いています。

フォームAとフォームBの情報を参考にフォームC、D、E以降に入力することになっています。

フォームへ入力する順番は必ずしもアルファベット順ではありません。

ここで、フォームCの入力後、例えばフォームDを開いた場合はフォームA、フォームBと開いたフォームDを除いた全てのフォームを閉じる事はできますでしょうか?

ifを使ってやり過ごしても良いのですが、今後フォームが増えることになったらその度にVBAに追加していくのは面倒かなと思い、ご質問させて頂きました。

お教え頂けるとありがたいです。
よろしくお願いします。

はっち
作成: 2019/04/05 (金) 13:29:15
通報 ...
1

下記のコードでどうでしょう。

Public Sub CloseAllForm()
    Dim i As Long
 
    For i = Forms.Count - 1 To 0 Step -1
        If Forms(i).Name <> "フォームA" And Forms(i).Name <> "フォームB" Then
            DoCmd.Close acForm, Forms(i).Name
        End If
    Next

End Sub

Forms(0から始まるインデックス) で開いているフォームを参照できます。
インデックスの最後から削除しているのは、前から削除すると削除したとき、インデックスが前にずれるので、
削除されずにのこるフォームが出てくるためです。

2
はっち 2019/04/05 (金) 16:08:15 b6c0e@a6755 >> 1

hatena様

思い通りの仕組みになりました!
本当にありがとうございます。