自動でメッセージボックスを閉じるならmessageboxtimeoutA!

ただのメッセージボックスでは、人が操作しないと次の工程に進まなくなります。

VBAを使って、MSGBOXを自動的にOKを押して閉じるようにしたかったり、WSHでpopupを使ってみたが閉じなかった。不安定。なんて人は、この記事を見て、解決に向かうかもしれない。

メッセージボックス処理をさらに上に上げるために備忘録として記録する。

自動的に閉じるメッセージボックスで一番おすすめのコードは?

一番良いコードというのは定義が難しいですが、今回の一番良いコードの定義は正確性とします。

メッセージボックスが自動的に閉じるコードは何種類あるの?

僕が使ったことのあるコードでは、2種類です。

1つはWSHのコードで参照設定が必要になります。

もう一つが今回のおすすめコードであるMessageBoxTimeoutAのコードです。参照設定は必要ありませんが、宣言エリアに別コードを書かなくてはいけません。Sleep関数と同じようなイメージです。

MessageBoxTimeoutAコードの紹介

MessageBoxTimeoutA返り値(戻り値)の紹介

コード 返り値(戻り値)
自動で閉じる 32000
自動で閉じる
※vbOKOnlyの時
1
OK 1
キャンセル 2
中止 3
再試行 4
無視 5
Yes 6
No 7
×ボタンで閉じる 1

実際にどちら(TimeoutAかWSH)が優秀か検証してみた

実際に、僕がどんな検証をしてみたのか。その中から見えてきた問題点をもう一度。

動画で示す

動画の解説

自動で閉じる2種類のメッセージボックスのコードをファンクションで用意します。

そして、そのファンクションを使ってどちらの方が正確性が高いのかを検証しました。

WSHは、一度も自動で閉じることができませんでした。ここまで調子が悪いのは珍しいです。

実際には、時間より少し遅れた程度で自動的に閉じます。不安定であるというのが通常です。

ただし、TimeoutAの方が正確であるというのは変わらずです。

使用コード