ユーザーにメッセージを表示する必要があります。 MsgBox
を使用してこれを行うと、ユーザーがボックスをクリックするまでプログラムが停止します。プログラムを一時停止せずにMsgBox
を開く方法があるかどうか知りたいのですが。
MsgBoxからのユーザー入力を期待していないようです。この場合、アプリケーションによっては、StatusBar
で十分な場合があります。
Excelではこれは簡単です。
Application.StatusBar = "Please be patient..."
Application.StatusBar = iDone & " of " & iTotal & " items done."
完了時にStatusBarをクリアするには:
Application.StatusBar = False
Accessでは、構文は少し複雑です。
Temp = SysCmd(acSysCmdSetStatus, "Hey, look at me!") ' Puts out your message
Temp = SysCmd(acSysCmdClearStatus) ' Clears StatusBar
私が発見したことがある限り、答えはあなたが見つけることができないということです。回避策は、ダイアログボックスとして機能するカスタムフォームです。
http://www.mvps.org/access/forms/frm0046.htm を参照してください(正確には質問ではありませんが、該当します)。
MsgBoxはモーダルです(ウィンドウが表示され、クリアされるまでコードの実行を停止します)。他のポスター/コメンターが述べたように-あなたの代わりはモーダルではないポップアップのあなた自身のバージョンを書くことです。あなたが本当にそれを必要としない限り、努力する価値はありません。
代わりにフォームを作成してください。 「Working、Please Wait」というテキストボックスのみを含む小さなフォームを作成しました。必要に応じて、フォームをポップアップ(docmd openform "フォーム名")として開きます。通常、完了するまでに時間がかかる操作を開始する直前です。作業が完了したら、フォームを閉じます(docmd close acform "form name")。これはプログラムを停止しませんが、ユーザーに「メッセージ」を提供します。
VBエディタで:[挿入]メニューの[ユーザーフォーム]を選択します。ツールボックスで[テキストボックス]を選択します:ユーザーフォームに四角形をドラッグしてテキストを入力します。ユーザーフォームを右クリックして[プロパティ]を選択します。ShowModalでプロパティ:Falseを選択します。VBAモジュールで、オンにする場所にUserForm1.Showを、オフにする場所にUserForm1.Hideを入力します。UserForm1は私のフォームです。もちろん、作成したフォームに適切な名前を使用します。
私はまず、ポップアップを表示してコードを実行し続けるためにmsgboxが本当に必要かどうかを評価する必要があると思います。
Msgboxの機能(すでに説明したとおり)はモーダルであり、「バイパス」することはできません。ただし、(msgboxに似た)フォームを作成し、このフォームを「非モーダル」として設定し、このフォームを表示するコードを呼び出すことができます。コードのワークフローが続きます。テスト済みで、Excelで動作します。
更新:Accessで参照が失われました。今はテストできません。 Accessでも機能することを願っています。
RGDS
WScriptのPopupメソッドを使用できます。サンプルコードを含む完全な詳細は次のとおりです。 http://msdn.Microsoft.com/en-us/library/x83z1d9f%28v=vs.85%29.aspx