お世話になります。

表題が分かりにくく、申し訳ありません。

メインのフォームがあり、ボタンを押してF_1が開き、その中のボタンを押すとF_2が開き、さらにその中のボタンを押すとF_3と続くという、メイン→F_1→F_2→F_3の構成のツールを作ろうとしています。
F_1からF_3のフォームには、うっかり閉じてしまってはいけないように、終了確認のダイアログが出てからフォームを閉じるようにしています。また、F_1,2は、子のフォームを開くときはVisibleをFalseにして非表示にしています。

やりたいことは、F_3のフォームでボタンを押して処理を終了させた場合にのみ、F_2,F_1のフォームを確認をせずにクローズしてメインのフォームに戻りたいのです。ボタンの処理を行わずにユーザからのフォームを閉じる作業をしたときは、順番通りにF_3,F_2,F_1の順で確認のダイアログを表示しながら閉じさせたいのです。

コード的には難しくないと思い組んでみたのですが、問題があり、最後の『処理』ボタンを押して終了するのはできたのですが、手動でフォームを閉じていく場合、F_1フォームだけが非表示のまま現れず、メインのフォームに戻ってしまいます。その状態で再びF_1フォームを開いても、OpenではなくVisibleがTrueになって表示されるだけになってしまいます。F_1のフォームではOpen時に処理をしているので、これではよくありません。

原因と対策をご教授願えますでしょうか。

下記がコードになります。

メイン

Option Compare Database
Option Explicit

Private Sub コマンド0_Click()
    DoCmd.OpenForm "F_1", windowmode:=acDialog
End Sub

F_1

Option Compare Database
Option Explicit

Public bChk As Boolean

Private Sub btnExit_Click()

    On Error Resume Next
    DoCmd.Close
End Sub

Private Sub btnOpen_Click()

    Me.Visible = False

    DoCmd.OpenForm "F_2", windowmode:=acDialog

    Me.Visible = True

    If (Form_F_1.bChk = True) Then
        On Error Resume Next
        DoCmd.Close
    End If
End Sub

Private Sub Form_Open(Cancel As Integer)
    bChk = False
    MsgBox "初期化しました。"
End Sub

Private Sub Form_Unload(Cancel As Integer)

    If (Form_F_1.bChk = True) Then
        Exit Sub
    End If

    If (MsgBox("終了しますか?", vbOKCancel + vbQuestion, "") <> vbOK) Then
        Cancel = True
    End If
End Sub

F_2

Option Compare Database
Option Explicit


Private Sub btnExit_Click()

    On Error Resume Next
    DoCmd.Close
End Sub

Private Sub btnOpen_Click()

    Me.Visible = False
    DoCmd.OpenForm "F_3", windowmode:=acDialog

    Me.Visible = True

    If (Form_F_1.bChk = True) Then
        On Error Resume Next
        DoCmd.Close
    End If

End Sub

Private Sub Form_Open(Cancel As Integer)
End Sub

Private Sub Form_Unload(Cancel As Integer)

    If (Form_F_1.bChk = True) Then
        Exit Sub
    End If

    If (MsgBox("終了しますか?", vbOKCancel + vbQuestion, "") <> vbOK) Then
        Cancel = True
    End If
End Sub

F_3

Option Compare Database
Option Explicit

Private Sub btnExit_Click()

    On Error Resume Next
    DoCmd.Close
End Sub

Private Sub btnExec_Click()
    MsgBox "処理は完了しました。"
    Form_F_1.bChk = True

    DoCmd.Close
End Sub

Private Sub Form_Unload(Cancel As Integer)

    If (Form_F_1.bChk = True) Then
        Exit Sub
    End If
    If (MsgBox("終了しますか?", vbOKCancel + vbQuestion, "") <> vbOK) Then
        Cancel = True
    End If
End Sub

フロー図

画像の説明をここに入力

何卒よろしくお願いいたします。