フォームが開いているか確認して、開いている場合はフォームを閉じるVBAのサンプルコードです。
“フォーム名”のところに閉じたいフォームの名前を指定します。
If SysCmd(acSysCmdGetObjectState, acForm, "フォーム名") <> 0 Then
DoCmd.Close acForm, "フォーム名"
End If
SysCmd の第一引数に acSysCmdGetObjectState 、第二引数に acForm、第三引数に対象となるフォームの名前を渡して戻り値が 0 以外の場合に閉じる処理を実行しています。
0以外の SysCmd acSysCmdGetObjectState の戻り値はそれぞれ以下のようになっています。
定数 | データベース オブジェクトの状態 | 値 |
---|---|---|
acObjStateOpen | 開いている | 1 |
acObjStateDirty | 変更後保存されていない | 2 |
acObjStateNew | 新規で開いた状態 | 4 |