VBAアクセスフォームアプリケーションのコードを使用して、現在開いているMsgBoxを閉じるオプションはありますか?
9 に答える
microsoft.public.vb.general.discussionのこのスレッドに関する Randy Birch の回答を確認してください。
彼は、MsgBox という .bas ファイルに関数を作成することを推奨しています。そうすることで、VB は組み込みの関数ではなく、あなたの関数を呼び出すようになります。
次に、独自の MsgBox フォームを作成し、一定時間後にフォームを閉じるタイマーを組み込みます。彼は、これを行う方法を示すリンクを提供しています。
彼はまた、組み込みの MsgBox 関数を明示的に呼び出す方法についても説明しています。
注: 私はこれを行ったことはありませんが、Randy Birch が知識豊富なリソースであることがわかりました。
MsgBoxes は、プログラムで閉じることを意図していないため、閉じるのが困難です。MsgBox を強制的に閉じなければならない設計になっている場合は、おそらく設計を再評価する必要があります。
私は間違っているかもしれませんが、MsgBox はモーダル フォームを作成するブロッキング コールであるため、それを行うためのオプションなどの簡単な方法はないと思います。これについて具体的なユースケースはありますか?
MarkJ が指摘しているように、これは (独自のコードで呼び出された VBA.MsgBox ではなく) Access によって生成されたダイアログである可能性がありますか?
たとえば、Access UI でテーブルの 'dataview' を使用して行を追加すると、"You are about to append 1 record..." (または類似) というメッセージが表示されます。このようなメッセージですか?もしそうなら、それらを抑制する方法は確かにあります...
Access MsgBoxの代替案を最初から作成するのではなく、ArvinMeyerのCustomMessageBox Creator(このページからダウンロード可能)を使用する(または少なくとも調査する)ことを検討してください。
メッセージ ボックスは、ユーザーに情報を表示するためのものです。したがって、一部のプロセスを自動化しない限り、プログラムで閉じることは適切な設計ではありません。
sendkeys または win API を使用できます。
同様の問題がありました。理論的には、「SendKeys」機能を使用できます ( http://msdn.microsoft.com/en-us/library/8c6yea83%28VS.85%29.aspxを参照)。ただし、MsgBox は実行をブロックするため、コマンドを使用できません。いつポップアップするかがわかっている場合は、しばらく待ってから SendKeys を使用する外部 Whshell を (スクリプトから) 実行できます。しかし、それを行う方法を知っている場合は、教えてください(ここで)。他の同様の可能性は、ブロックされない別のスレッド/プロセスを開くことですが、VBAで可能かどうかはわかりません。