- ベストアンサー
Accessフォームに進行状況ダイアログを表示したい
Access2000を使用しています。 DAOでデータ引き当て処理を行なっている最中、進行状況ダイアログ を表示すれば時間の目安が付きやすいと思うのですが、やり方が分か りません。Accessでフォームに表示するのは難しいのでしょうか? ご存知の方、方法もふくめて宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 Call InitProgressとCall UpdateProgress(処理数/合計数)の後に、DoEventsを入れてもダメ?
その他の回答 (3)
- yuji0401
- ベストアンサー率9% (28/284)
ラベルを使います。 例えば、 lblBackとlblFrontの2つのラベルがあります。 lblBackの幅を1000(width)、Colorは白に設定。 lblFrontの幅も最初はlblBackと同じにします。Colorは青。 Private Sub InitProgress lblFront.Width = 0 lblFront.Visible = True lblBack.Visible = True End Sub Private Sub UpdateProgress(Status as Double) lblFront.Width = lblBack.Width * Status DoEvents End Sub Private Sub EndProgress lblFront.Visible = False lblBack.Visible = False End Sub Private Sub Button1_Click() Call InitProgress Do '処理 Call UpdateProgress(処理数/合計数) Loop Call EndProgress End Sub 手抜きですがこんな感じですかね。 後はご自分で工夫してください。
お礼
ありがとうございました。実行してみましたが、やり方が悪いのかDAO処理の為なのか、処理が終わってから満タンに表示されてしまいます。
N = 100 Me.進行ゲージ.Max = N Me.進行ゲージ.Value = 0 Me.進行ゲージ.Visible = True For I = 1 To N
プログレスバーに進行状況を表示するサンプルコードです。 Private Sub Form_Load() Me.進行ゲージ.Visible = False End Sub Private Sub コマンド0_Click() Dim I As Integer Dim N As Integer Me.進行ゲージ.Max = 100 Me.進行ゲージ.Value = 0 Me.進行ゲージ.Visible = True For I = 1 To 100 Me.進行ゲージ.Value = I Pause 0.1 DoEvents Next I Me.進行ゲージ.Visible = False End Sub [標準モジュール] Public Sub Pause(ByVal PauseTime As Single) Dim Finish As Single Finish = Timer + PauseTime Do DoEvents Loop Until Timer > Finish End Sub
お礼
ありがとうございました。プログレスバーではなくフォームに表示したかったので。。 でも、やってみます!!
お礼
できた!ありがとうございました!あなたはスゴイ!