• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログレスバーでの経過状況表示)

vbaでプログレスバーを使用して経過状況を表示する方法

このQ&Aのポイント
  • vb.netでのtimerのようなものをやりたくてvbaでプログレスバーを使用して経過状況を表示するプログラムを作りました。
  • プログレスバー自体での視覚的な経過状況表示はできたのですが、現在のパーセンテージをlabelに表示することができません。
  • プログラム終了時にはlabel1に現在のプログレスバーの値が表示されますが、進行中には表示されないのです。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.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 試してないのでうまくいかなかったらごめん。

C_32767
質問者

お礼

回答ありがとうございました。 repaintというものを初めて知りうれしいです。今回の環境では処理速度に影響がないのでdoeventsをしようしたいと思います。