Excel VBAで、アプリケーションを作成しています。
処理時間がが長いので、For文中に進捗状況を表示させるために、ActiveXのラベルを設置して、そのCaptionに進捗を表示させるようにしたのですが、DoEventsを使っても、Sleepで少し待っても、ScreenUpdatingをTrueにしても、処理が完了するまで、ラベルのCaptionにセットした文字が表示されません。
つまり、処理中にはラベルのCaptionがずっと何も表示されず、処理終了後に、最後にセットしたCaptionが表示されるという状態です。
ちなみに、デバッグモードでステップ実行をすると、ループ中でもCaptionにセットした文字が表示されます。
また、ソースはこのように書いてます。
VBA
1 2For i = 0 To 100000 3 4 Application.ScreenUpdating = True 5 6 DoEvents 7 8 Sleep 1000 9 10 Worksheets(1).lblMassage.Caption = i & "番目を処理中" 11 12 DoEvents 13 14 Application.ScreenUpdating = False 15 16 (VBAの処理) 17 18Next 19
DoEvebts、ScreenUpdating 、Sleepなどを、このようにつけたり、無くしたり、いろいろな組み合わせでやってみましたが、結果は何も変わりませんでした。
もちろん、ScreenUpdatingの記述を完全に無くしてもみました。
ActiveXのラベルのCaprionは、処理中にセットしたものは、処理が終わるまで表示されないものなのでしょうか?

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/28 09:20 編集