はじめに
普段よく使うMsgBoxでは、何かボタンを押すか、×をクリックしない限りメッセージを終了する事はできません。
自動的にメッセージを消したい場合は、Windows Script Host(WSH)を読み込んでPopupコマンドを使用するのが一般的です。
自動で消えるメッセージのサンプルコード
Sub SamplePopup1()
Dim WSH As Object
Set WSH = CreateObject("WScript.Shell")
WSH.Popup "1秒後に閉じます!", 1, "Auto Close Popup", vbInformation
Set WSH = Nothing
'何かの処理
Range("A1") = Time()
End Sub
このプログラムでは、最初にCreateObject(“WScript.Shell”)として、ライブラリを呼び出しています。
次にPopupコマンドでメッセージを表示させます。
第一引数が、メッセージ内容。
第二引数が、閉じるまでの秒数。
第三引数が、タイトル。
第四引数が、アイコンやボタンの種類の指定になります。
第二引数は、1秒未満を指定すると自動で終了しなくなるようです。
(0.6~0.9は受け付けるが時間が正確とは言えない。)
ボタンを押して終了したか判断する
Popuplコマンドの返り値を取得すると、何のボタンが押されたかを取得できます。
時間切れの場合は、-1が返ってきます。
ボタンを複数設定する場合は、メッセージボックスの設定を参照してください。
以下のプログラムでは、OKボタンで終了するとA1セルに時刻を表示し、時間切れの場合は空白になります。
Sub SamplePopup2()
Dim WSH As Object
Set WSH = CreateObject("WScript.Shell")
Dim result As Long
result = WSH.Popup("1秒後に閉じます!", 1, "Auto Close Popup", vbInformation)
Set WSH = Nothing
Select Case result
Case 1: 'OKが押された
Range("A1") = Time()
Case -1: '時間切れ
Range("A1") = ""
End Select
End Sub
まとめ
自動でメッセージを消したい処理は、Windows Script Host(WSH)を読み込んでPopupコマンドを使用すれば、簡単にプログラムを書く事が出来ます。
また返り値で、時間切れのケースを判断できます。
参考にしてみてください。