フォームが開いているか確認して、開いている場合はフォームを閉じる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 |

