処理中にメッセージを表示したい

このQ&Aのポイント
  • Access2002でDBはSQLサーバーを使って、処理中にメッセージを表示する方法を教えてください。
  • クリックイベントの中で処理中にメッセージを表示する方法を教えてください。
  • 処理開始ボタンを作成し、処理中にメッセージを表示する方法を教えてください。
回答を見る
  • ベストアンサー

時間のかかる処理中にメッセージを表示したい。

はじめまして、宜しくお願いします。 現在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 を書くと表示されるのですが 他の用途も考えて やはりクリックイベントの中で行いたいと思っております。 基本的な部分で見落としているところがあるかもしれませんが なにか気づかれた方はご教授ください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#2494
noname#2494
回答No.1

コードを実行している最中は、OSからの命令は実行待ちになります。 画面の再描画はOSからの要請による物なので、この様な場合には表示してくれません。 その場合には、 Me!処理中表示ラベル.Visible = True の後に DoEvents 命令を入れると、この場で画面が更新してくれますので、表示される様になると思います。 Access2002上でのプログラムですか?VB6出しかやったことないのですが、多分同じだと思います。

takatoo
質問者

お礼

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

関連するQ&A

  • マウスが触れるとテキストを表示し離れる非表示にする

    アクセスです。 フォームにラベルを設置して、 そのラベルにマウスが触れたらテキストボックスを表示させたいのです。 フォームのオープンイベントは Private Sub Form_Open(Cancel As Integer) Me.テキスト2.Visible = False End Sub になっています。 ラベルのマウスボタン解放時イベントで Private Sub ラベル0_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にして、ラベルをクリックするとテキストボックスが表示されます。 マウスボタン移動時イベントで Private Sub ラベル0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にすると、理想通りラベルからマウスが触れたらテキストボックスが表示されます。 ここまではいいのですが マウスのカーソルが離れたら またテキストボックスを非表示にしたいのですがどうすればいいですか?

  • コントロールに触れたら使用可能にしたい

    通常は「使用可能」を「いいえ」にして、テキストボックスにカーソルが振れたら、使用可能を「はい」にしたいのですが Private Sub ID_Enter() Me.ActiveControl.Enabled = True End Sub Private Sub ID_GotFocus() Me.ActiveControl.Enabled = True End Sub Private Sub ID_LostFocus() Me.ActiveControl.Enabled = True End Sub Private Sub ID_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ActiveControl.Enabled = True End Sub どれもクリックしないと動作しないようなのですが、このような場合、どのイベントを使えばいいのでしょうか?

  • Accessのレポートでデータがなくても罫線だけ表示させたい

    Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database  Dim A As Integer '-------今何行目なのかをカウントする為の変数  Dim B As Integer '-------今回印刷する予定のレコード件数を入れて                  おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)   A = 0   B = DCount("ID", "Q05商品リスト")   Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  A = A + 1  If A Mod 10 = 0 Then    Me!改ページ3.Visible = True  Else    Me!改ページ3.Visible = False    If A < B Then      Me.NextRecord = True      Me!商品名.Visible = True      Me!メーカー名.Visible = True    ElseIf A = B Then      Me.NextRecord = False      Me!商品名.Visible = True      Me!メーカー名.Visible = True    Else      Me.NextRecord = False      Me!商品名.Visible = False      Me!メーカー名.Visible = False    End If   End If End Sub

  • ACCESS VBA 判定に利用できる情報について

    下のようなテストプログラムを作ってみました。 サブルーチン chgcolorの中で、どちらの上位ルーチンからコールされたか で処理を切り替えたいと考えています。上位ルーチンからの引数を増やす ことなく、判定する方法はないものでしょうか。  アドバイスお願いします。 Private Sub txt1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Call chgcolor(Me.txt1) End Sub  : Private Sub txt1_DblClick(Cancel As Integer) Call chgcolor(Me.txt1) End Sub  : Sub chgcolor(a As Control) ◇txt1_MouseDownからコールされた場合(またはクリックイベントの場合) →a.BackColor = CLng("&HFF00FF") ◇txt1_DblClickからコールされた場合(またはダブルクリックイベントの場合) →a.BackColor = CLng("&HFFFFFF") End Sub

  • アクセス2003でカレンダーコントロールを挿入し、フォームの開くときイ

    アクセス2003でカレンダーコントロールを挿入し、フォームの開くときイベントに、 Private Sub Form_Open(Cancel As Integer) Me.Calendar7.Visible = True Me.Calendar7.Value = Date End Sub と記述しても、当日の日付が表示されません。 原因がわからないのでどなたか教えてください。

  • Access VBA ラベル印刷開始位置の指定でエラー表示される

    Accessのレポートで、宛名ラベル印刷の印刷開始位置を選択できる ようにしたく、下記URLの通りにやってみたのですが、エラー表示がでます。 参考URL http://support.microsoft.com/default.aspx?scid=kb%3bja%3b879856 この通りにやってみると、エラーメッセージ「コンパイルエラー プロシージャ内では無効です」 と表示されてしまいます。 エラーにならないようにするには、どうしたらよいのでしょうか? 記述は下記になります。 Option Compare Database Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) Option Explicit Dim i, k As Integer i = 0 k = InputBox("ラベル印刷の開始位置を入力してください") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If i < k - 1 Then Me.MoveLayout = True Me.NextRecord = False Me.PrintSection = False i = i + 1 End If End Sub 恐れ入りますが、ご教示お願い致します。

  • Accessのレポートに取り消し線を表示したい

    いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub お力添えをお願いいたします。

  • 最終ページのみページフッターを表示する

    環境は Office2019 Windows10です レポートでページフッターに合計が表示されるようにしています 複数ページになった時に最終ページのみページフッターを表示したいので 下記のコードを記入しましたが うまくいきません Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer) If Page = Pages Then Me.ページフッター.Visible = True Else Me.ページフッター.Visible = False End If End Sub 最終ページのみページフッターを表示にはどのようにすればいいでしょうか 宜しくお願い致します

  • VB6 ドラッグ&ドロップ

    Image1をPicture1(正方形)にドラッグ&ドロップするプログラム を作りたいと思っています。 このプログラムだとImage1全体がドラッグされるのではなく、 Image1の絵はその位置に残ってImage1の外枠だけがドラッグされてしまいます。 外枠だけでなくImage1の絵も一緒にドラッグできるようにするにはどうすればいいのでしょうか? また、このプログラムだとドロップする場所(Picture1_)以外で ドロップしてしまった場合でも画面上からImage1の絵と外枠が消えてしまいます。 ドロップする場所(Picture1_)以外でドロップしてしまった場合は、 Image1全体を画面上に残しておきたいのですがどうすればいいのでしょうか? Option Explicit Dim dx As Single, dy As Single Private Sub Form_Load() Image1.Picture = LoadPicture(App.Path & "picture.jpg") Image1.Stretch = True End Sub Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X - dx, Y - dy End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Image1.Drag 1 dx = X: dy = Y 'マウスダウン位置 End Sub Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) Source.Visible = False 'ドロップオブジェクトを非表示にする Picture1.BackColor = RGB(255, 255, 255) End Sub Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, _ State As Integer) If State = 0 Then Picture1.BackColor = RGB(0, 0, 255) If State = 1 Then Picture1.BackColor = RGB(255, 255, 255) End Sub

  • 行数を固定して納品書を作成したが、いらない部分がでる

    こんばんは、提出時間がせまっているので、 あせって、質問しました。 今、アクセスにて納品書のレポートの作成中です。 Q_売上テーブルとQ_売上明細テーブルをつかって、 レポートを作成し、5行に固定したかったので、 下記のようなVBAを記述しました。 行は、固定されましたが、 なぜか1行しかない時などに、 商品区分だけが2行目3行目に1行目の内容をコピーして はいってくるのです。 どこがおかしいのかわからず、苦戦中です。 ご教授、よろしくお願いいたします。 Option Compare Database Dim AAA As Integer Dim BBB As Integer Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) AAA = 0 BBB = DCount("伝票番号", "Q_売上明細テーブル", "伝票番号='" & Me!伝票番号 & "'") End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) AAA = AAA + 1 Me!テキスト54 = AAA If AAA Mod 5 = 0 Then If AAA < BBB Then Me!改ページ55.Visible = True Me.Section(3).Visible = True ElseIf AAA = BBB Then Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me!テキスト54.Visible = False Me!商品区分.Visible = False Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If Else Me!改ページ55.Visible = False Me.Section(3).Visible = False If AAA < BBB Then Me.NextRecord = True Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True ElseIf AAA = BBB Then Me.NextRecord = False Me!テキスト54.Visible = True Me!商品区分.Visible = True Me!商品名.Visible = True Me!数量.Visible = True Me!単価.Visible = True Me!金額.Visible = True Else Me.NextRecord = False Me!テキスト54.Visible = False Me!商品区分.Visible = True Me!商品名.Visible = False Me!数量.Visible = False Me!単価.Visible = False Me!金額.Visible = False End If End If End Sub

専門家に質問してみよう