- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログレスバーでの経過状況表示)
vbaでプログレスバーを使用して経過状況を表示する方法
このQ&Aのポイント
- vb.netでのtimerのようなものをやりたくてvbaでプログレスバーを使用して経過状況を表示するプログラムを作りました。
- プログレスバー自体での視覚的な経過状況表示はできたのですが、現在のパーセンテージをlabelに表示することができません。
- プログラム終了時にはlabel1に現在のプログレスバーの値が表示されますが、進行中には表示されないのです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こういう場合、UserForm1.RefreshまたはDoEventsを使うと良い。 Refreshは画面(ここではユーザフォーム1)を再描画するもの、DoEventsは現在のスレッド実行中に別のWindowsメッセージを処理させるというものだ。DoEventsを使う場合、画面再描画以外のイベントも処理してしまうので、若干の注意が必要だ。 Private Sub CommandButton4_Click() Dim i As Long Application.Visible = False i = 1 For i = i To 1000000 UserForm1.ProgressBar1.Value = i / 1000000 * 100 UserForm1.Label1.Caption = UserForm1.ProgressBar1.Value DoEvents i = i + 1E-44 Next Application.Visible = True End Sub 試してないのでうまくいかなかったらごめん。
お礼
回答ありがとうございました。 repaintというものを初めて知りうれしいです。今回の環境では処理速度に影響がないのでdoeventsをしようしたいと思います。