※ ChatGPTを利用し、要約された質問です(原文:アクセスで他アプリから復帰した場合の再描画イベント)
アクセスで他アプリから復帰した場合の再描画イベント
2004/12/11 13:26
このQ&Aのポイント
VBでアクセスを使用している開発者が、アプリからの復帰時の再描画イベントについて質問しています。
処理中に別の画面を表示してアクセスに戻ると、再描画が行われずに白い画面が表示される問題が発生しています。
質問者はActivateイベントを使用してみましたが、アクセスに戻っただけではイベントが発生しないことがわかりました。
アクセスで他アプリから復帰した場合の再描画イベント
エクセル、アクセスでVBAを自作している者です。コーディング暦5年以上で、フォーム画面も組めるようになりました。
いまだに理解が進まないのがイベントですが、その中で質問があります。
かなり時間のかかる処理(例えば30分とか1時間とか)を行う際に、例えば100件処理ごとに「今~件処理しました。」というようなメッセージをフォーム上に表示して、経過を知らせるとともにPCが固まっていないことを確認できるようにしています。(Application.Echoを通常はFalseにして、100件ごとにEcho=Trueに直してからRepaintメソッドで書いて、再びEcho=Falseに戻しています)
しかし、これもずっとアクセスを表示したままの場合にしか動きません。処理中に別の画面(エクセルとかエクスプローラーとか)を表示して、アクセスに戻ってくると、アクセスはVB実行中で画面の再描画はしてもらえず、処理がすべて終わるまでは白い画面(何も表示されない画面)などが表示されたままになってしまいます。フォームのActivateイベントにも仕込んでみましたが、アクセスに戻っただけではActivateイベントは発生しないようです。
Applicationオブジェクトや、CurrentProjectオブジェクトにはイベントがないようで、アクセスがアクティブになった場合に、再描画させることができるのかどうか、教えていただければ幸いです。
質問の原文を閉じる
質問の原文を表示する
お礼
ありがとうございます。 DoEventsの機能はヘルプを読んでみたものの、まだ完全に理解できていません。ただ、アドバイスの通りにRepaintの前にDoEventsを置いてみて、うまくいきました。下記のようなコードで動いています。 Private Sub Form_Activate() DoEvents Me.Repaint Exit Sub