• ベストアンサー

VBAでUserFormでProgressBarとLabelを同時表示できない理由は?

VBAでUserFormをつかってProgressBarとLabelを同時に表示させる。つもりでしたが、ProgressBarが満たされた後Labelが表示されます。その理由と対策を教えて下さい。そのコードを以下に示します。 Sub a() With UserForm1 .Show vbModeless .Label1 = "始めのテキスト" End With s = 1 e = 20000 For i = s To e UserForm1.Label1 = "始めのテキスト" UserForm1.ProgressBar1.Value = i / e * 1000 Next i End Sub お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

理由の説明は面倒なのでやめときますが、 For i = s To e DoEvents UserForm1.Label1 = "始めのテキスト" UserForm1.ProgressBar1.Value = i / e * 1000 Next i のように DoEvents を入れることで解決できると思います。 ところで、 For i = s To e UserForm1.Label1 = "始めのテキスト" UserForm1.ProgressBar1.Value = i / e * 1000 Next i ↑これって UserForm1.Label1 = i / e * 100 & "% 終了" のようにしたいんじゃないんですか? UserForm1.Label1 = "始めのテキスト" のままでいいんだったらループの中に入れる意味が無いです。

e-l
質問者

お礼

ありがとうございました。できました!

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Repaint を追加してみました。( *1000 は *100 ?) ExcelVBAでしょうか。   With UserForm1     .Show vbModeless     .Label1 = "始めのテキスト"     .Repaint   End With      S = 1   e = 20000      For i = S To e     'UserForm1.Label1 = "始めのテキスト"     UserForm1.ProgressBar1.Value = i / e * 100   Next i   

e-l
質問者

お礼

有難う御座います。

関連するQ&A