プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

progressbarを表示するために、
重たい処理のループの中ではDoEventsを入れることで表示ができているのですが、

ループとループの間でprogressbarを更新するには、どのようにしたらよろしいでしょうか?

***** 現状
for i =1 to 9999
重い処理
Frm_ProgressBar.ProgressBar1.value = 進捗数
DoEvents
next i

***** やりたいこと
for i =1 to 9999
重い処理A
next i

Frm_ProgressBar.ProgressBar1.value = 進捗数
DoEvents

for i =1 to 9999
重い処理B
next i

A 回答 (3件)

No.2です。


ProgressBarは本来DoEvents()やRefreshで更新しなくてもValueの値を更新すると表示も更新される作りになっています、表示が更新されないのは「進捗数」が変化していないことが考えられます、そのあたりの確認をしてみてください。
    • good
    • 0

Refreshメソッド



Frm_ProgressBar.ProgressBar1.value = 進捗数
Frm_ProgressBar.ProgressBar1.Refresh

この回答への補足

回答ありがとうございます
でも、ダメでした
Refreshメソッドで表示が反映される前に、次のループに入ってしまい、
結果、描画は更新されませんでした。

補足日時:2013/10/16 15:27
    • good
    • 0

Q、VB6 DoEventsの代わりは?


A、やはり、DoEvents。

Frm_ProgressBar.ProgressBar1.value = 進捗数

For i =1 To 9999
 重い処理B
If Frm_ProgressBar.ProgressBar1.value <> 進捗数 Then
   DoEvents
End If
Next i

と、普通はこんな感じです。が、何となく違和感を感じます。
もしかしたら、要求されているのは、次のようなコードなんでしょうか?

Frm_ProgressBar.ProgressBar1.value = 進捗数
Do
 DoEvents
Loop Until Frm_ProgressBar.ProgressBar1.value = 進捗数
For i =1 To 9999
 重い処理B
Next i

いずれにしろ、次のコードですと問題が解決されます。

Frm_ProgressBar.ProgressBar1.value = 進捗数
For i =1 To 9999
 重い処理B
 DoEvents
Next i
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています