VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/07/07(Wed) 13:05
投稿者へむへむ
Eメール
URL
タイトルRe: 実行時エラー91の原因究明方法

恐らくイベントの発生順に
関係しているのではないでしょうか?

Option Explicit
Private wObject As Object
Private Sub Command1_Click()
  Do while ...
    '* wObject を使用する処理
    ...
    DoEvents
  Loop
End Sub
Private Sub Form_Load()
  set wObject = ...
End Sub
Private Sub Form_Unload(Cancel As Integer)
  Set wObject = Nothing
End Sub

実際はどのような処理を行っているのか分かりませんが、
例えば、上のようなコードがあった場合、
ボタンを押して Loop 処理中に
フォームの×ボタンなどを押すと
Loop 中なのに Unload イベントが割り込んできて
オブジェクトを解放してしまい、
Loop 処理に戻ってきた時に
wObject は解放されてしまっている
というようなエラーが発生するという現象ではないでしょうか?
Loop 処理後ならば、×を押しても正常に終了しますし。

それなので、イベントプロシージャの
開始時と終了時にそれぞれログを出力するようにし、
プロシージャの呼び順を確認すれば分かるかと。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -