プロが教えるわが家の防犯対策術!

はじめまして、宜しくお願いします。

現在Access2002でDBはSQLサーバーを使って、
下記のことを実行しようと思っております。

やりたいことは、タイトルにも書いたように、
処理中にメッセージを出したいのですが、思うようにできず行き詰っております。

やっていることは
処理開始というコマンドボタンを作成して、そのクリックイベントに
下記のようなソースを記述します。

Private Sub 処理開始_Click()
Dim i As Long
Dim X As Long
Me!処理中表示ラベル.Visible = True
SysCmd acSysCmdInitMeter, "只今、処理中です…", 100
For i = 0 To 1000000
X = X + 1
SysCmd acSysCmdUpdateMeter, i
Next i
SysCmd acSysCmdRemoveMeter
Me!処理中表示ラベル.Visible = False
MsgBox X
End Sub


処理が始まる前に

Me!処理中表示ラベル.Visible = True
でラベルを表示して、

Me!処理中表示ラベル.Visible = False
でラベルを非表示にしているのですが、処理中にラベルが表示されません。

仕方がないのでクリックイベント以外の先に行われるマウスダウンイベントに
Private Sub コマンド0_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me!ラベル1.Visible = True
End Sub
を書くと表示されるのですが

他の用途も考えて
やはりクリックイベントの中で行いたいと思っております。

基本的な部分で見落としているところがあるかもしれませんが
なにか気づかれた方はご教授ください。
宜しくお願いします。

A 回答 (1件)

コードを実行している最中は、OSからの命令は実行待ちになります。



画面の再描画はOSからの要請による物なので、この様な場合には表示してくれません。

その場合には、

Me!処理中表示ラベル.Visible = True
の後に
DoEvents
命令を入れると、この場で画面が更新してくれますので、表示される様になると思います。

Access2002上でのプログラムですか?VB6出しかやったことないのですが、多分同じだと思います。
    • good
    • 0
この回答へのお礼

早速のレスありがとうございます。

Hawk-Wさんの言う通りやってみましたらできました!
コードの実行中はOSからの命令は実行待ちになるのですか。。
画面の再描画がOSからの要請によるものだと知りませんでした。
まだまだ、勉強不足です。

大変勉強になりました。
本当にありがとうございます。

お礼日時:2002/08/15 22:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!