
エクセル、アクセスで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ランキング
-
VB.NET フォーム上に描いたグ...
-
NullPointerExeption
-
画面のちらつきの原因が知りた...
-
java.awt.peer?
-
OpenLayersの描画を固定で表示...
-
GDI+で描画した画像を消去する...
-
javaアプレットで太字を描く方法。
-
C# リストビューの特定のセルの...
-
SwingとEDT(イベントディスパッ...
-
「タイプ初期化子が例外をスロ...
-
変数名の付け方
-
エクセルVBAで、条件に一致する...
-
private static という変数の修飾
-
エクセルVBA 画像を貼り付ける...
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
パワーポイントのVBAでテキスト...
-
VB.NET getとsetの概念がわかり...
-
Excelで =EMBED("Acrobat Docu...
-
IPアドレスのクラスAを取得して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETのSendMessageを教えてく...
-
VB.NET フォーム上に描いたグ...
-
MFCでMSペイントみたいなツー...
-
アクセスで他アプリから復帰し...
-
C# DataGridView のCellPaintin...
-
複数画像表示切り替え Visual c++
-
requestanimationframeを一斉に...
-
BMP画像を画像処理して連続に表...
-
C# リストビューの特定のセルの...
-
Labelコントロールの背景をグラ...
-
canvasで表示されてる画像を1...
-
JAVAでの背景画像表示
-
重なった要素上でのイベントで...
-
C#のGraphicsクラスについてです。
-
Java Script 色を塗れるプログ...
-
リスナについて
-
C# テキストボックスについて
-
Javaで文字の角度を変えて表示...
-
EXCELのVBAでフォームに文字を...
-
Canvas等の図形を移動する時,直...
おすすめ情報