
エクセル、アクセスでVBAを自作している者です。コーディング暦5年以上で、フォーム画面も組めるようになりました。
いまだに理解が進まないのがイベントですが、その中で質問があります。
かなり時間のかかる処理(例えば30分とか1時間とか)を行う際に、例えば100件処理ごとに「今~件処理しました。」というようなメッセージをフォーム上に表示して、経過を知らせるとともにPCが固まっていないことを確認できるようにしています。(Application.Echoを通常はFalseにして、100件ごとにEcho=Trueに直してからRepaintメソッドで書いて、再びEcho=Falseに戻しています)
しかし、これもずっとアクセスを表示したままの場合にしか動きません。処理中に別の画面(エクセルとかエクスプローラーとか)を表示して、アクセスに戻ってくると、アクセスはVB実行中で画面の再描画はしてもらえず、処理がすべて終わるまでは白い画面(何も表示されない画面)などが表示されたままになってしまいます。フォームのActivateイベントにも仕込んでみましたが、アクセスに戻っただけではActivateイベントは発生しないようです。
Applicationオブジェクトや、CurrentProjectオブジェクトにはイベントがないようで、アクセスがアクティブになった場合に、再描画させることができるのかどうか、教えていただければ幸いです。
No.1ベストアンサー
- 回答日時:
あまり自信がないのですが、
REPAINTの前にDO.EVENTをかましたらうまくいきませんか。
感覚として、一度OSに制御を移して再描画になるのでないかと思うのですが。
間違ってたらごめんなさい
ありがとうございます。
DoEventsの機能はヘルプを読んでみたものの、まだ完全に理解できていません。ただ、アドバイスの通りにRepaintの前にDoEventsを置いてみて、うまくいきました。下記のようなコードで動いています。
Private Sub Form_Activate()
DoEvents
Me.Repaint
Exit Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面のちらつきの原因が知りた...
-
「タイプ初期化子が例外をスロ...
-
javascriptからjavaを呼び出したい
-
JavaScriptからJAVAクラスを呼...
-
SDカードについて
-
0歳児の指しゃぶりに関して
-
中学のクラス数
-
Application.Wait の参照設定
-
Accessでの印刷時に、任意の場...
-
インスタンス参照でアクセスで...
-
サーブレットコンテキストの意...
-
JAVAでMath.powを使用せずに、...
-
__interfaceに定義するメソッド...
-
コマンドプロンプト実行後に画...
-
複数のクラスで共通した関数を...
-
配列のメソッド
-
同じクラスにならない確率を教...
-
C# 点の描き方をおしえてくだ...
-
オーバーライドとラッパーの違い
-
タブコントロールの問題 (VB)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVAでの背景画像表示
-
SwingとEDT(イベントディスパッ...
-
VB.NET フォーム上に描いたグ...
-
Labelコントロールの背景をグラ...
-
C# DataGridView のCellPaintin...
-
Javaで文字の角度を変えて表示...
-
Java、jPanelに描画する
-
canvasで表示されてる画像を1...
-
javascriptのライブラリーで、...
-
画面のちらつきの原因が知りた...
-
JOGLで描画した立方体の中心座標
-
Java Script 色を塗れるプログ...
-
C# リストビューの特定のセルの...
-
VB.NETのSendMessageを教えてく...
-
Canvas等の図形を移動する時,直...
-
このプログラミングをどう組み...
-
ドラッグして矩形を描くには
-
GDI+で描画した画像を消去する...
-
重なった要素上でのイベントで...
-
getGraphics()の意味を教えて...
おすすめ情報