[ VBA ] タイムアウトして自動で閉じるダイアログを出力する ( WshShell.Popup )

Pocket

ここでは、時間制限付きのメッセージダイアログ ( WshShell.Popup ) を使用して、自動的に閉じるダイアログのサンプルスクリプトを掲載しています。

スポンサーリンク

タイムアウトして自動で閉じる確認ダイアログ

以下、OK とキャンセルボタンを出力するダイアログですが、一定時間経過するとダイアログが自動で閉じられるサンプルスクリプトです。「 操作しなければ OK と見なして、自動的に Windows10 にアップデートしますよ 」 的なヤツです。

なお、詳細なインターフェースは 「 Popup メソッド 」 を参照ください。

    Dim wsh As New WshShell
    Dim ret As Variant
    
    ret = wsh.Popup("10秒だけ待ってやろう", _
                    10, _
                   "爆発するぞ", _
                   vbOKCancel + vbQuestion)
    
    '10秒以内にキャンセルボタンがクリックされなければ
    '爆発処理が実行される
    If (ret = vbOK) Then
        'OKボタンクリック
        MsgBox "自ら爆発しました"
        
    ElseIf (ret = vbCancel) Then
        'キャンセルボタンクリック
        MsgBox "爆発は免れました"
        
    ElseIf (ret = -1) Then
    
        'タイムアウト時は-1がリターンされる
        MsgBox "時間オーバーにより爆発しました"
    
    End If
    

参照設定

WshShell を使用するには、以下のように Windows Script Host Object Model への参照設定が必要です。

Windows Script Host Object Model  参照設定

Windows Script Host Object Model 参照設定

出力結果

OK キャンセルボタンの操作を行わないとタイムアウトして、自動的にダイアログは閉じられます。

タイムアウトするダイアログ

タイムアウトするダイアログ

なんだか WshShell.Popup は動作が不安定(自動で閉じない時がある)であるような気がします。どのような時に閉じないかなどの条件や原因は不明です。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *