dポイントプレゼントキャンペーン実施中!

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

お願いします。

A 回答 (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 = "始めのテキスト"
のままでいいんだったらループの中に入れる意味が無いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/23 23:18

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
  
    • good
    • 0
この回答へのお礼

有難う御座います。

お礼日時:2004/02/23 23:18

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