処理の進行状況を表示するプログレスバー
Accessで処理に時間のかかるプログラムを実行している際に使用しているユーザーに進行状況を分かりやすくする必要があります。
こういった時の為にAccessには長い処理をインジゲーターとして表示する「プログレスバー」が用意されています。今回はこのプログレスバーの使用方法とプログラムコードを説明します。

プログレスバーの設置
プログレスバーコントロールの作成方法を説明します。
プログレスバー用のフォームを作成します。
1.フォームを用意します。フォームの名前は「F_プログレスバーコントロール」とします。
2.コマンドボタンをひとつ設置します。
3.デザインビューでツールボックスを表示し、「コントロールの選択」をクリックします。(カナヅチのアイコン)
4.「コントロールの選択」をクリックすると選択出来るコントロールの一覧が表示されますので、この中から「Microsoft ProgressBar Control」を探しクリックします。

5.クリックしたら、そのままフォーム上にカーソルを移動し再度クリックします。クリックするとフォーム上にプログレスバーコントロールが設置されます。

6.設置したプログレスバーコントロール上で右クリックを行い、「プロパティ」を選択しプログレスバーコントロールの名前を変更しておきます。今回は「Progbar」とします。

テーブルの準備
続いてデータ格納用のテーブルを用意します。
処理用のデータなのでどんなテーブルでも構いません。
今回はフィールドを「data」として1~10000までの値を入力しました。
またテーブル名は「T_プログレスバー」とします。

プログラムコードの作成
プログラムはコマンドボタンの「クリック時」に記述します。
Private Sub コマンド0_Click()
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim i, j As Integer
Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset
RS.Open “T_プログレスバー”, CN, adOpenStatic, adLockOptimistic
i = RS.RecordCount
j = 1
Do Until RS.EOF
Progbar.Value = j / i * 100
j = j + 1
RS.MoveNext
Loop
MsgBox “処理が完了しました。”, vbInformation, “処理完了”
Progbar.Value = 0
End Sub
プログラムの説明
プログレスバーの値は「Progbar.Value」で設定します。
今回は最小値を「0」最大値を「100」のプログレスバーを作成しますので、最大値「100」に対する進行状況の値をプログレスバーに設定することになります。
【i = RS.RecordCount】
変数「i」にテーブル「T_プログレスバー」のレコードカウントを設定します。(今回は10000)
この10000に対しての進行状況を表示させます。
【j = 1】
変数「j」に初期値として「1」を設定します。
変数「j」は現在処理しているレコード番号を意味します。
【Progbar.Value = j / i * 100】
プログレスバーの値を設定します。
現在のレコード番号をレコード件数で割った値に100を掛け算します。
レコード番号1の場合だと、1/10000*100=0.01です。
【j = j + 1】
1レコード処理する度に変数「j」に1をプラスします。
次のレコード数という意味です。
最終的に「j / i * 100」が「10000/10000*100=100」になればプログレスバーの最大値になる計算です。
以上で完成です。
プログラムを実行し、プログレスバーが最大値まで動けば成功です。

You Tubeにて動画を公開しています。