SysCmdメソッドを使って、ステータスバーに進行状況インジケータを表示する事ができます。
サンプルプロシージャでは、テーブル「商品管理」の全レコードを編集する処理の進行状況をSysCmdメソッドを使って表示しています。
フォームにコマンドボタン「コマンド0」を配置して、イベント「クリック時」に次のイベントプロシージャを作成します。
Private Sub コマンド0_Click()
Dim rs As Recordset
Dim rsCount As Long
Dim i, j As Long
DoCmd.Hourglass True
Set rs = CurrentDb.OpenRecordset("商品管理", dbOpenTable)
'レコードをカウントします。
rs.MoveFirst
rsCount = rs.RecordCount
MsgBox "データは" & rsCount & "件です。"
SysCmd acSysCmdInitMeter, "処理実行中です", rsCount
For i = 1 To rsCount
SysCmd acSysCmdUpdateMeter, i
'★ レコードを編集する処理 ★
For j = 1 To 1000000
Next j
Next i
SysCmd acSysCmdRemoveMeter
DoCmd.Hourglass False
End Sub
サンプルでは「★ レコードを編集する処理 ★」に仮にFor...Nextステートメントを使って、変数jが1000000になるまでループ処理を行っていますが、実際はレコードを編集する処理等を記述します。
SysCmdメソッドの構文は次のとおりです。
<構文> SysCmd action[, text][, value]
進行状況インジケータをステータスバーに表示するには、引数actionに定数acSysCmdInitMeterを指定し、引数textと引数valueを指定します。
引数actionには、組み込み定数を指定しますが、サンプルプロシージャで指定している定数の内容は次のとおりです。
定数 内容
acSysCmdInitMeter 進行状況インジケータを初期化します。
acSysCmdUpdateMeter 進行状況インジケータを指定した値に更新します。
acSysCmdRemoveMeter 進行状況インジケータを消去します。
引数textには、ステータスバーに左揃えに表示する文字列を指定します。
引数actionに定数acSysCmdInitMeterを指定した場合の引数valueは、インジケータの最大値または100%に相当します。
インジケータに表示される操作の進行状況を更新するには、引数actionに定数acSysCmdUpdateMeterを指定し、引数valueを指定します。
引数actionに定数acSysCmdUpdateMeterを指定した場合は、SysCmdメソッドが引数valueの値を使ってインジケータに表示する割合を計算します。
たとえば、最大値が200のときに引数valueに100を指定すると、進行状況インジケータが半分まで進みます。
DAOを使用するには、[ツール(T)]メニューの[参照設定(R)]をクリックすると表示される[参照設定]ダイアログボックスで、「Microsoft DAO 3.6Object Library」をチェックします。