●概要●
ActiveXコントロールの一つ、プログレスバーの使用方法を説明します。
●準備●
- 新しいフォームをデザインモードで開く
- メニューバーの[挿入]−[ActiveXコントロール]を選択し、[ActiveXコント
ロールの挿入]ダイアログを開く
- リストボックスの中から[Microsoft ProgressBar Control Version 6.0]を
選択してOKボタンをクリックする (Access97の場合Version 5.0)
- プログレスバーコントロールをフォームの中ほどに貼り付け、バー下部に
コマンドボタンを配置する
- プログレスバーの名前を「Progress1」、コマンドボタンの名前を
「コマンド1」とする
- [コマンド1]のOnClick/クリック時イベントに以下のコードを記述する
●サンプルコード●
Private Sub コマンド1_Click()
Dim i As Integer 'ループカウンタ
Dim PauseTime As Double '時間計測変数
Me.Progress1.Max = 10 'プログレスバーの最大値
Me.Progress1.Min = 0 'プログレスバーの最小値
'プログレスバーの値を増減させるループ処理
For i = Me.Progress1.Min To Me.Progress1.Max
Me.Progress1.Value = i
'現在の時刻の1秒後まで処理を止める無限ループ
PauseTime = Timer + 1
Do While Timer < PauseTime '※1
Loop
Next
End Sub
●動作確認●
フォームビューに切り替え、コマンドボタンをクリックします。
●詳細●
まずプログレスバーの最大値と最小値を設定します。この2つの値の差がバーが移動するスムーズさに影響します。差が大きければスムーズになり、小さければバーは大まかに移動します。
次にプログレスバーのValueプロパティに値を代入していきますが、代入する値を増やすためにループ処理を行っています。今回のループ処理ではTimer関数を使用して現在時刻との差を計測しています。
※1の部分で1を足していますので、ここではプログレスバーの値は1秒ごとに増えていきます。ここで足している値を変化させることで値が増えるタイミングを変えることが出来ます。
このようにプログレスバーを使うことによって、時間のかかる処理の進行度合いを表示することが出来ます。
サンプルでは時間でプログレスバーの値を増やしていますが、もちろん他の処理をトリガにすることも可能です。例えば、多数のレコードを順番に処理する場合など、Max値をレコード総数にして処理が進むごとにValueプロパティを増やしていけば、レコード処理の状態を表示することが出来ます。