前回の記事では、テキストボックスを使った処理の進み具合を示す方法を取り上げました。
今日は、アクセスの機能を使った方法をご紹介します。

画面の左下にある「ステータスバー」。ここには、システムからのメッセージを表示することができます。
よく「フォームビュー」など表示されるアレですね。
VBAを使うことで、このステータスバー領域にオリジナルのメッセージを表示させることができます。
では、やってみましょう。
ステータスバーにメッセージを表示させる
ステータスバーにメッセージを表示させるには、「SysCmd acSysCmdSetStatus」というコマンドを使います。

前回使ったフォームを流用します。
ボタン「btn_実行」のクリック時イベントに、次のコードを割り当ててください。
Option Compare Database Option Explicit Private Sub btn_実行_Click() Dim syori As Long '現在処理した件数を格納 Dim kensu As Long '処理する件数を格納 '処理件数を10件と仮定 kensu = 10 For syori = 1 To kensu 'ステータスバーに処理した件数を代入 SysCmd acSysCmdSetStatus, syori & "/" & kensu MsgBox syori Next syori 'ステータスバーのメッセージを消去 SysCmd acSysCmdClearStatus End Sub
実行ボタンを押して、コードを実行してみましょう。

10回メッセージボックスが表示され、ステータスバーは、「メッセージボックスが表示された回数 / 処理件数」を表示します。

メッセージボックスが10回表示されると、

ステータスバーは元に戻ります。
進行状況メーター編
続いては、進行状況メーター編です。
「SysCmd acSysCmdInitMeter」というコマンドを使います。

進行状況メーターとは、クエリを実行するときに表示される、進行状況を示すバーグラフのことです。進行状況メーターとは、一般的にプログレスバーと呼ばれます。
この記事では、なじみの深い「プログレスバー」といいます。

前回使ったフォームを流用します。
ボタン「btn_実行」のクリック時イベントに、次のコードを割り当ててください。
Private Sub btn_実行_Click() Dim syori As Long '現在処理した件数を格納 Dim kensu As Long '処理する件数を格納 '処理件数を10件と仮定 kensu = 10 SysCmd acSysCmdInitMeter, "処理中です…", kensu For syori = 1 To kensu 'ステータスバーに処理した件数を代入 SysCmd acSysCmdUpdateMeter, syori MsgBox syori Next syori 'ステータスバーのメッセージを消去 SysCmd acSysCmdClearStatus End Sub
実行ボタンを押して、コードを実行してみましょう。

画面右下に「処理中です…」の文字と、プログレスバーが出現しました。

メッセージボックスのOKを押すと、次のメッセージが表示され、プログレスバーが伸びていきます。

メッセージボックスが10回表示されると、

プログレスバーは消去されます。
アクセスで大きな処理を行うと、アクセス全体が応答しない状態になってしまいますので、正常に動いているか不安になりますね。
いくつかの方法をご紹介しましたが、何らかの方法で、正常に処理していることが示されると安心です。
(b^ー°)
コメントをどうぞ!