即効テクニック |
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」をチェックします。