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(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の設定については、下記の定数で設定する事ができます。】
定数 | 値 | アイコン画像 | 説明 |
---|---|---|---|
vbCritical | 16 | 警告メッセージのアイコンを表示します。 | |
vbQuestion | 32 | 問い合わせメッセージアイコンを表示します。 | |
vbExclamation | 48 | 注意メッセージアイコンを表示します。 | |
vbinformation | 64 | 情報メッセージアイコンを表示します。 |
定数 | 値 | 表示されるボタンと種類の内容 | 実行画面 |
---|---|---|---|
vbOkonly | 0 | 「OK」ボタンのみ表示 | |
vbOkCancel | 1 | 「OK」・「キャンセル」を表示 | |
vbAbortRetryIgnore | 2 | 「中止」・「再試行」・「無視」を表示 | |
vbYesNoCancel | 3 | 「はい」・「いいえ」・「キャンセル」を表示 | |
vbYesNo | 4 | 「はい」・「いいえ」を表示 | |
vbRetryCancel | 5 | 「再試行」・「キャンセル」を表示 |
※戻り値は、数値でも文字列でも一緒です。例:「はい」の戻り値:6 = vbYes 同じ戻り値です。
定数 | 内容説明 | 戻り値 |
---|---|---|
vbOK | 「OK」ボタンを押すと | 1 |
vbCancel | 「キャンセル」ボタンを押すと | 2 |
vbAbort | 「中止」ボタンを押すと | 3 |
vbRetry | 「再試行」ボタンを押すと | 4 |
vbIgnore | 「無視」ボタンを押すと | 5 |
vbYes | 「はい」ボタンを押すと | 6 |
vbNo | 「いいえ」ボタンを押すと | 7 |
【POPUPメゾットは、メッセージボックスと同じ方法で設定が出来ますので、メッセージボックスの基礎も参照して下さい】
メッセージボックスのメッセージを自動的に閉じます。(指定秒数で閉じる)
※詳細は、上記【参照設定】を参照して下さい。
【実行手順】
・メッセージボックスを約3秒間表示して閉じます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
' '''******** 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 ’ |
(画面クリックして拡大)
メッセージボックス(アイコン付き)のメッセージを自動的に閉じます。(指定秒数で閉じる)
下記のサンプルプログラムは、メッセージボックス(アイコン付き)のメッセージを連続的に表示させて自動的に閉じるサンプルプログラムです。以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。
※詳細は、上記【参照設定】を参照して下さい。
【実行手順】
①メッセージボックス+警告アイコンを約1秒間表示して閉じます。
②メッセージボックス+問い合わせアイコンを約1秒間表示して閉じます。
③メッセージボックス+注意アイコンを約1秒間表示して閉じます。
④メッセージボックス+情報アイコン約1秒間表示して閉じます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' '''******** 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 ' |
(画面クリックして拡大)
メッセージボックス(ボタン付き)のメッセージを自動的に閉じます。(指定秒数で閉じる)
下記のサンプルプログラムは、メッセージボックス(ボタン付き)のメッセージを連続的に表示させて自動的に閉じるサンプルプログラムです。以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。
※詳細は、上記【参照設定】を参照して下さい。
【実行手順】
①メッセージボックス+【OK】ボタンを約1秒間表示して閉じます。
②メッセージボックス+【OK・キャンセル】を約1秒間表示して閉じます。
③メッセージボックス+【はい・いいえ】を約1秒間表示して閉じます。
④メッセージボックス+【中止・再試行・無視】を約1秒間表示して閉じます。
⑤メッセージボックス+【はい・いいえ・キャンセル】を約1秒間表示して閉じます。
⑥メッセージボックス+【再試行・キャンセル】を約1秒間表示して閉じます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
' '''******** 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 ' |
(画面クリックして拡大)
メッセージボックスを表示させて指定時間内に【はい・いええ】の判断させる
下記のサンプルプログラムは、メッセージボックスを表示させて指定時間(約5秒)以内にメッセージボックス閉じるので【はい・いいえ】の判断させるサンプルプログラムです。
以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。
※詳細は、上記【参照設定】を参照して下さい。
【実行手順】
①メッセージボックが表示されて、【5秒以内に「Yes」】
②メッセージボックスの表示で【はい】を選択した場合、【はい】を選択したメッセージボックスを表示させる。(約1秒以内に閉じる)
③メッセージボックスの表示で【いいえ】を選択した場合、【いいえ】を選択したメッセージボックスを表示させる。(約1秒以内に閉じる)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
' '''******** 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秒以内に回答させるサンプルプログラムです。アンケートの回答結果は、EXCELシートに一覧表示されます。
以下のプログラム全てに共通しますが、プログラムを実行する際は、必ず事前に【Windows Script Host Object Model】の参照設定する必要が有ります。
※詳細は、上記【参照設定】を参照して下さい。
【実行手順】
①メッセージボックスにアンケート内容(質問内容)が表示されるので、設問1~5まで、順番に「はい・いいえ」で回答します。
②アンケートを回答した結果をEXCELシートのC列に「はい・いいえ」で登録されます。(約5秒以内に回答する)
※アンケートの回答に約5秒過ぎてしまった場合は、【空白】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
' '''******** 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 ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。