3

VBAアクセスフォームアプリケーションのコードを使用して、現在開いているMsgBoxを閉じるオプションはありますか?

4

9 に答える 9

6

microsoft.public.vb.general.discussionのこのスレッドに関する Randy Birch の回答を確認してください。

彼は、MsgBox という .bas ファイルに関数を作成することを推奨しています。そうすることで、VB は組み込みの関数ではなく、あなたの関数を呼び出すようになります。

次に、独自の MsgBox フォームを作成し、一定時間後にフォームを閉じるタイマーを組み込みます。彼は、これを行う方法を示すリンクを提供しています。

彼はまた、組み込みの MsgBox 関数を明示的に呼び出す方法についても説明しています。

注: 私はこれを行ったことはありませんが、Randy Birch が知識豊富なリソースであることがわかりました。

于 2009-07-16T18:06:27.910 に答える
2

MsgBoxes は、プログラムで閉じることを意図していないため、閉じるのが困難です。MsgBox を強制的に閉じなければならない設計になっている場合は、おそらく設計を再評価する必要があります。

于 2009-07-16T18:41:34.047 に答える
1

私は間違っているかもしれませんが、MsgBox はモーダル フォームを作成するブロッキング コールであるため、それを行うためのオプションなどの簡単な方法はないと思います。これについて具体的なユースケースはありますか?

于 2009-07-16T18:04:26.820 に答える
1

MarkJ が指摘しているように、これは (独自のコードで呼び出された VBA.MsgBox ではなく) Access によって生成されたダイアログである可能性がありますか?

たとえば、Access UI でテーブルの 'dataview' を使用して行を追加すると、"You are about to append 1 record..." (または類似) というメッセージが表示されます。このようなメッセージですか?もしそうなら、それらを抑制する方法は確かにあります...

于 2009-07-17T09:40:08.573 に答える
0

Access MsgBoxの代替案を最初から作成するのではなく、ArvinMeyerのCustomMessageBox Creator(このページからダウンロード可能)を使用する(または少なくとも調査する)ことを検討してください。

于 2009-07-16T19:16:56.487 に答える
0

メッセージ ボックスは、ユーザーに情報を表示するためのものです。したがって、一部のプロセスを自動化しない限り、プログラムで閉じることは適切な設計ではありません。

sendkeys または win API を使用できます。

于 2009-07-22T11:14:25.810 に答える
0

同様の問題がありました。理論的には、「SendKeys」機能を使用できます ( http://msdn.microsoft.com/en-us/library/8c6yea83%28VS.85%29.aspxを参照)。ただし、MsgBox は実行をブロックするため、コマンドを使用できません。いつポップアップするかがわかっている場合は、しばらく待ってから SendKeys を使用する外部 Whshell を (スクリプトから) 実行できます。しかし、それを行う方法を知っている場合は、教えてください(ここで)。他の同様の可能性は、ブロックされない別のスレッド/プロセスを開くことですが、VBAで可能かどうかはわかりません。

于 2009-07-22T09:21:10.000 に答える