内容
フォームに設置したラベルを利用して、処理の進行状況を表示するプログレスバーを作成します。フォームにラベルを2つ配置し、そのうちの1つ(Label1)は、処理の進行に合わせて右方向へ伸びて行くプログレスバーとし、もう一方(Label2)は、プログレスバーの外枠と数値による%表示として使用します。開始ボタン(CommandButton1)をクリックすると処理が表示され、処理状況が100%に達すると処理終了のメッセージを表示します。
プログラミング例
以下の手順に従って、Excel VBAフォーム上にプログレスバーを作成し、処理の進行状況を表示します。
1.VBA フォームの作成
デベロッパー タブを表示し、「挿入」ボタンをクリックしてUserFormを挿入します。
2.ラベルの配置
フォーム上に2つのラベル(Label1、Label2)を配置します。Label1はプログレスバー本体、Label2は外枠と%表示のためです。
3.開始ボタンの配置
フォーム上にコマンドボタン(CommandButton1)を配置します。これをクリックすると処理が開始されます。
4.VBA コードの追加
UserFormのコードモジュールに以下のコードを追加します。
Private Sub UserForm_Initialize()
myAddWidth = Label1.Width / 100
Label1.Width = 0
End Sub
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 100
Application.Wait Now() + TimeValue("00:00:01")
Label1.Width = Label1.Width + myAddWidth
Label2.Caption = i & "%"
' 画面の再描画を行う
DoEvents
Next i
MsgBox "処理が完了しました!", vbInformation, "完了"
End Sub
5.プログレスバーの更新
上記のコードでは、CommandButton1_Click サブルーチンが開始ボタンのクリック時に実行されます。処理が進行するにつれて、ProgressValue 変数を更新し、UpdateProgressBar サブルーチンでプログレスバーを更新します。また、処理が完了した後には ResetProgressBar サブルーチンでプログレスバーをリセットします。