自動で消えるメッセージ

プログラミング

はじめに

 普段よく使う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コマンドを使用すれば、簡単にプログラムを書く事が出来ます。
 また返り値で、時間切れのケースを判断できます。
 
 参考にしてみてください。

タイトルとURLをコピーしました