Categories: VBA基礎

EXCEL VBA WSH .Popupメソッドの使い方(メッセージボックスを自動に閉じる・時間経過で閉じる)

 

 

EXCEL VBA WSH.Popupメソッドの使い方(メッセージボックスを自動に閉じる・時間経過で閉じる)

 

 

●はじめに

今回は、Wsh.Popupメゾットの使い方を説明します。Wsh.Popupメゾットは、メッセージボックスを自動的に閉じる事ができる機能です。EXCEL VBAでは、メッセージボックス(Msgbox)の機能では、自動に閉じる機能はありません。実際に、Wsh.Popupメゾットを利用する場合、Windows Script Host(Wsh)の機能を有効にする事で、メッセージボックスを自動(秒指定)で閉じる事ができます。それでは、下記のサンプルプログラムを交えて説明いたします。

なお、Wsh.Popupの利用方法については、下記を参照してください。

●EXCEL VBAでPOPUPメゾットを利用する上で必ず下記の設定が必要になります。

 

 

●書式の説明  WSHのPOPUPメゾット

● Wsh.Popup(strText,[nSecondsToWait],[strTitle],[nType])

引数名説明
strTextメッセージボックスに表示する文字列を指定します(必須)
nSecondsToWaitメッセージボックスを閉じるまでの時間(秒単位)
strTitleメッセージボックスの上部タイトル名を指定します。(省略可能)
nTypeボダンの設定(Yes/No等)及びアイコンの設定(省略可能)


【注意点①:参照設定】

●EXCEL VBAでPOPUPメゾットを利用する上で必ず下記の設定が必要になります。
【使用例】
● Wsh.Popup(strText,[nSecondsToWait],[strTitle],[nType])・ WSH.Popup “3秒後、自動に閉じます”, 3, “メッセージが表示”, vbExclamation
【nTypeの設定については、下記の定数で設定する事ができます。】
定数アイコン画像説明
vbCritical16警告メッセージのアイコンを表示します。
vbQuestion32問い合わせメッセージアイコンを表示します。
vbExclamation48注意メッセージアイコンを表示します。
vbinformation64情報メッセージアイコンを表示します。
定数表示されるボタンと種類の内容実行画面
vbOkonly0「OK」ボタンのみ表示
vbOkCancel1「OK」・「キャンセル」を表示
vbAbortRetryIgnore2「中止」・「再試行」・「無視」を表示
vbYesNoCancel3「はい」・「いいえ」・「キャンセル」を表示
vbYesNo4「はい」・「いいえ」を表示
vbRetryCancel5「再試行」・「キャンセル」を表示
【戻り値については、下記の通りになります。】
※戻り値は、数値でも文字列でも一緒です。例:「はい」の戻り値:6 = vbYes  同じ戻り値です。
定数内容説明戻り値
vbOK「OK」ボタンを押すと1
vbCancel「キャンセル」ボタンを押すと2
vbAbort「中止」ボタンを押すと3
vbRetry「再試行」ボタンを押すと4
vbIgnore「無視」ボタンを押すと5
vbYes「はい」ボタンを押すと6
vbNo「いいえ」ボタンを押すと7

【POPUPメゾットは、メッセージボックスと同じ方法で設定が出来ますので、メッセージボックスの基礎も参照して下さい】

 

 

 

メッセージボックスのメッセージを自動的に閉じます。(指定秒数で閉じる)

 

 

●プログラム説明 サンプル① 【Wsh.Popupメゾット】
下記のサンプルプログラムは、メッセージボックスのメッセージを自動的に閉じるサンプルプログラムです。以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。
※詳細は、上記【参照設定】を参照して下さい。
【実行手順】
・メッセージボックスを約3秒間表示して閉じます。

 

'
'''******** AKIRA55.COM ******* https://akira55.com/wsh_popup/
'
Sub Popup01()  'メッセージを約3秒後に、自動に閉じます!

    Dim WSH As Object
    
    Set WSH = CreateObject("WScript.shell")

    WSH.Popup "3秒後、自動に閉じます", 3, "メッセージが表示", vbExclamation

    Set WSH = Nothing

End Sub
’

 

 

●実行前~実行後 ※プログラム実行後、メッセージが表示されて約3秒後、自動的にメッセージが閉じました。
(画面クリックして拡大)

 

 

 

 

メッセージボックス(アイコン付き)のメッセージを自動的に閉じます。(指定秒数で閉じる)

 

 

●プログラム説明 サンプル② 【Wsh.Popupメゾット】

下記のサンプルプログラムは、メッセージボックス(アイコン付き)のメッセージを連続的に表示させて自動的に閉じるサンプルプログラムです。以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。

※詳細は、上記【参照設定】を参照して下さい。

【実行手順】
①メッセージボックス+警告アイコンを約1秒間表示して閉じます。
②メッセージボックス+問い合わせアイコンを約1秒間表示して閉じます。
③メッセージボックス+注意アイコンを約1秒間表示して閉じます。
④メッセージボックス+情報アイコン約1秒間表示して閉じます。

 

 

'
'''******** AKIRA55.COM ******* https://akira55.com/wsh_popup/
'
Sub Popup02()   'メッセージ+アイコン表示させて、自動に閉じます!


    Dim WSH As Object
    
    Set WSH = CreateObject("WScript.shell")

    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbCritical

    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbQuestion

    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbExclamation
    
    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbInformation
    
    Set WSH = Nothing

End Sub
'

 

●実行前~実行後 ※プログラム実行後、メッセージボックス+アイコン4種類を順番に表示して、約1秒後に閉じました。
(画面クリックして拡大)

 

 

メッセージボックス(ボタン付き)のメッセージを自動的に閉じます。(指定秒数で閉じる)

 

 

●プログラム説明 サンプル③ 【Wsh.Popupメゾット】

下記のサンプルプログラムは、メッセージボックス(ボタン付き)のメッセージを連続的に表示させて自動的に閉じるサンプルプログラムです。以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。

※詳細は、上記【参照設定】を参照して下さい。

【実行手順】
①メッセージボックス+【OK】ボタンを約1秒間表示して閉じます。
②メッセージボックス+【OK・キャンセル】を約1秒間表示して閉じます。
③メッセージボックス+【はい・いいえ】を約1秒間表示して閉じます。
④メッセージボックス+【中止・再試行・無視】を約1秒間表示して閉じます。
⑤メッセージボックス+【はい・いいえ・キャンセル】を約1秒間表示して閉じます。
⑥メッセージボックス+【再試行・キャンセル】を約1秒間表示して閉じます。

 

 

'
'''******** AKIRA55.COM ******* https://akira55.com/wsh_popup/
'

Sub Popup03()    'メッセージ+ボタン表示させて、自動に閉じます!


    Dim WSH As Object
    
    Set WSH = CreateObject("WScript.shell")

    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbOKOnly

    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbOKCancel
    
    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbYesNo

    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbAbortRetryIgnore
    
    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbYesNoCancel
    
    WSH.Popup "約1秒後、自動に閉じます", 1, "メッセージが表示", vbRetryCancel
    
    Set WSH = Nothing

End Sub
'

 

 

●実行前~実行後 ※※プログラム実行後、メッセージボックス+6種類のボタン(表示)を順番に表示して、約1秒後に閉じました。
(画面クリックして拡大)

 

 

 

メッセージボックスを表示させて指定時間内に【はい・いええ】の判断させる

 

 

●プログラム説明 サンプル④ 【Wsh.Popupメゾット】

下記のサンプルプログラムは、メッセージボックスを表示させて指定時間(約5秒)以内にメッセージボックス閉じるので【はい・いいえ】の判断させるサンプルプログラムです。
以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。

※詳細は、上記【参照設定】を参照して下さい。

 

【実行手順】
①メッセージボックが表示されて、【5秒以内に「Yes」】
②メッセージボックスの表示で【はい】を選択した場合、【はい】を選択したメッセージボックスを表示させる。(約1秒以内に閉じる)
③メッセージボックスの表示で【いいえ】を選択した場合、【いいえ】を選択したメッセージボックスを表示させる。(約1秒以内に閉じる)

 

 

'
'''******** AKIRA55.COM ******* https://akira55.com/wsh_popup/
'
Sub Popup04()     'メッセージボックスを表示させて指定時間内に「はい・いいえ」の判断させる。

    Dim WSH As Object
    Dim Ans As Integer
    
    Set WSH = CreateObject("WScript.shell")
    
    Ans = WSH.Popup("5秒以内に「はい」か「いいえ」のボタンを押して下さい。", 5, "メッセージが表示", vbYesNo)

    If Ans = vbYes Then
                WSH.Popup "「はい」が押されました", 1, "結果を表示"
        ElseIf Ans = vbNo Then
                WSH.Popup "「いいえ」が押されました", 1, "結果を表示"
    End If
    
    Set WSH = Nothing

End Sub
'

 

 

●実行前~実行後 ※プログラム実行後、メッセージボックスを表示さますので、指定時間(約5秒)以内にメッセージボックス閉じるので【はい・いいえ】の判断します。【はい】か【いいえ】を選ぶと押したボタンのメッセージが表示(約1秒)されます。
(画面クリックして拡大)

 

 

 

メッセージボックスを表示させて指定時間内にアンケートを回答させる。

 

 

●プログラム説明 サンプル⑤ 【Wsh.Popupメゾット】

下記のサンプルプログラムは、順番にメッセージボックス(ボタン付き)をアンケート方式で表示させて、メッセージの回答を5秒以内に回答させるサンプルプログラムです。アンケートの回答結果は、EXCELシートに一覧表示されます。

以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。

※詳細は、上記【参照設定】を参照して下さい。


【実行手順】
①メッセージボックスにアンケート内容(質問内容)が表示されるので、設問1~5まで、順番に「はい・いいえ」で回答します。
②アンケートを回答した結果をEXCELシートのC列に「はい・いいえ」で登録されます。(約5秒以内に回答する)
※アンケートの回答に約5秒過ぎてしまった場合は、【空白】

 

 

'
'''******** AKIRA55.COM ******* https://akira55.com/wsh_popup/
'

Sub Popup05()      'メッセージボックスを表示させて指定時間内にアンケートを回答させる。

    Dim WSH As Object
    Dim Ans, lRow, I As Long
    
    Set WSH = CreateObject("WScript.shell")

    lRow = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得
    
    Range("C2:C" & lRow + 2).ClearContents 'C列の回答結果をクリアーする。
    
    DoEvents
    WSH.Popup "社内アンケートを開始します。約5秒以内にお答え下さい。", 1, "アンケート調査", vbInformation

    For I = 2 To lRow
    
        DoEvents
        Ans = WSH.Popup(Cells(I, "B"), 5, Cells(I, "A"), vbYesNo)  'アンケートを順番に表示させて回答する。
    
        If Ans = vbYes Then
                    Cells(I, "C") = "はい" '「はい」が押されました"
            ElseIf Ans = vbNo Then
                    Cells(I, "C") = "いいえ" '「いいえ」が押されました"
        End If
        
    Next I
    
    DoEvents
    WSH.Popup "アンケートを終了します。ご協力ありがとうございました。", 1, "アンケート調査", vbInformation
    
End Sub
'

 

 

●実行前~実行後 ※プログラム実行後、順番にアンケート内容がメッセージボックスに表示されますので、「はい・いいえ」で回答します。アンケート内容に回答した結果は、C列の【回答】に「はい・いいえ」で登録されます。
(画面クリックして拡大)

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA