|
こんばんわ。
経験談ですが。
フォームのオープン時イベント内で、そのフォームのコントロール等にアクセスしようとすると、
閉じているかまたは存在しないオブジェクトを参照しています。
というメッセージが表示されることがあります。
MDBファイルを開き、最初にフォームを開いた時に、フォームオブジェクトが生成され、Formsコレクションに追加されるという動作を裏でしているようなのですが、フォームオブジェクトの生成が、マクロ処理のスピードに追いつけない時にこの問題が発生するらしい、と解釈しています。
このため、対処法としては、Open、Loadイベントは使用せず、OpenFormした後に、フォームに定義したPublicイベントを呼び出すという方法をとっています。この方法だと、オブジェクトの生成後の呼び出しになるため、問題が発生しません。
多分、こんな感じです
Public Function OPEN_MF01_JOB選択F() As Integer
Dim frm As Form_MF01_JOB選択F
DoCmd.OpenForm "MF01_JOB選択F"
Set frm = Forms("MF01_JOB選択F")
frm.Init
End Function
Public Sub Init()
Me!T02_PJ_DT.Form.RecordSource = set_sql '20100708 ←ここで止まる
End Sub
余談ですが上記の問題はクラスモジュールでも発生します。
クラスモジュールのPublicスコープで、例えば以下のような変数定義を行い、
Dim x As New DAO.Recordset
Initializeプロシージャ(Class_Initialize())でx変数を使用しようとすると、稀にエラーになります。
ご参考。
|
|