ActiveXコントロールの一つ、プログレスバーの使用方法を説明します。
● 準備 ●
(1) 新しいフォームをデザインモードで開く
(2) メニューバーの[挿入]-[ActiveXコントロール]を選択し、[ActiveXコント
ロールの挿入]ダイアログを開く
(3) リストボックスの中から[Microsoft ProgressBar Control Version 6.0]を
選択してOKボタンをクリックする (Access97の場合Version 5.0)
(4) プログレスバーコントロールをフォームの中ほどに貼り付け、バー下部に
コマンドボタンを配置する
(5) プログレスバーの名前を「Progress1」、コマンドボタンの名前を「コマン
ド1」とする。
(6) [コマンド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プロパティを
増やしていけば、レコード処理の状態を表示することが出来ます。
|