@ RemouのDebug.Printは、フォームが開いていないとエラーになります。
Most Access開発者がデータベースにIsLoaded()関数をインポートして使用します。
Function IsLoaded(ByVal strFormName As String) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
エクセルから、あなたはこのようにそれを書き換えることができることを使用するには:(5月または元のMS版から編集することはないかもしれませんが)これはそれの私のバージョンのコード
Function IsLoaded(ByVal strFormName As String, objAccess As Object) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
Const acSysCmdGetObjectState = 10
Const acForm = 2
If objAccess.SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If objAccess.Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
(私はExcelからそれをテストしませんでしたが、あなたは考えを得る)
より良い答えを得るために、例を追加したいかもしれません。 –
私はこれを答えに入れません。なぜなら、質問には本当に答えないからですが、これは作ってみるととても悪い考えです。私のアドバイスは、あなたがしようとしていることに接近するためのより良い方法を見つけることです。あなたが詳細を述べるなら、私はより良いアプローチについてアドバイスをしようとします。 – JohnFx