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.6
Object Library」をチェックします。
|