Microsoft Access VBA - フォームが開いているかどうかを調べる方法

◆SysCmdメソッド
 SysCmdメソッドを利用すると、指定したAccessオブジェクトが開いているかどうかを確認することができます。SysCmdの第一引数 action に定数 acSysCmdGetObjectState を指定した場合、SysCmd メソッドは、次の定数の組み合わせを返します。

定数 データベース オブジェクトの状態
acObjStateOpen 開いている 1
acObjStateDirty 変更後保存されていない 2
acObjStateNew 新しい 4

オブジェクトが開いていないか、または存在しない場合は、SysCmd メソッドは 0 を返します。

◆Sample

次の例は、frmMainというフォームが開いているかどうかを確認します。

Private Sub コマンド2_Click()
    Dim frmname As String

   ' フォーム名を設定
   frmname = "frmMain"

   ' フォームが閉じているとき
   ' acSysCmdGetObjectStateの定数は10なので、
   ' acSysCmdGetObjectStateの代わりに10でもよい。
   If SysCmd(acSysCmdGetObjectState, acForm, frmname) = 0 Then
       MsgBox frmname & "は閉じています。"
   ' フォームが開いているとき
   ElseIf SysCmd(acSysCmdGetObjectState, acForm, frmname) = 1 Then '
   ' 定数1の代わりにacObjStateOpenでもよい
       MsgBox frmname & "は開いています。"
   End If

End Sub

▼ページトップに戻る