機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA

自動的に閉じるMsgBox



画面にメッセージを表示するにはMsgBox関数を使います。たとえば次のコードは、画面に「田中亨」という文字列を表示します。

Sub Sample()
    MsgBox "田中亨"
End Sub

画面には[OK]ボタン付きのメッセージボックスが表示されます。
このメッセージボックスは、ユーザーが[OK]ボタンをクリックするまで、ずっと表示され続けます。では、指定した時間が経過したら自動的に閉じるようなメッセージボックスを表示するにはどうしたらいいでしょう?

残念ながらExcelのVBAには、そうした便利な関数は用意されていません。もしどうしても自動的に閉じるメッセージボックスを表示したいのでしたら、Windows Scripting Host(WSH)を使いましょう。WSHのPopupメソッドで表示したメッセージボックスは、指定した時間が経過すると自動的に閉じます。次のサンルは、表示したメッセージボックスを5秒後に閉じます。

Sub Sample2()
    Dim WSH As Object
    Set WSH = CreateObject("WScript.Shell")
    WSH.Popup "5秒後、自動的に閉じます", 5, "Title", vbInformation
    Set WSH = Nothing
End Sub

Popupメソッドの構文は次の通りです。

WSH.Popup(strText,[nSecondsToWait],[strTitle],[nType])

引数名意味
 strText メッセージボックスに表示する文字列。必ず指定します
 nSecondsToWait メッセージボックスを閉じるまでの時間。省略可能
 strTitle メッセージボックスのタイトル。省略可能
 nType アイコンやボタンの種類。省略可能

引数nSecondsToWaitで指定した時間が来る前にユーザーがボタンを操作すれば、いつでもメッセージボックスを閉じることができます。
引数nTypeには次の数値を指定できます。

数値VBAの定数意味
 0 vbOKOnly [OK]ボタンを表示します
 1 vbOKCancel [OK]ボタンと[キャンセル]ボタンを表示します
 2 vbAbortRetryIgnore [中止]ボタン、[再試行]ボタン、および[無視]ボタンを表示します
 3 vbYesNoCancel [はい]ボタン、[いいえ]ボタン、および[キャンセル]ボタンを表示します
 4 vbYesNo [はい]ボタンと[いいえ]ボタンを表示します
 5 vbRetryCancel [再試行]ボタンと[キャンセル]ボタンを表示します
 16 vbCritical  アイコンを表示します
 32 vbQuestion  アイコンを表示します
 48 vbExclamation  アイコンを表示します
 64 vbInformation  アイコンを表示します

これらの数値は、VBAのMsgBox関数で使用できるvbYesNoやvbQuestionなどの定数にも同じ値が割り当てられています。

Popupメソッドで表示したメッセージボックスで、どのボタンがクリックされたかを調べるのもMsgBox関数と同じです。クリックされたボタンに応じて、それぞれ次の数値が返ります。

数値VBAの定数クリックされたボタン
 1 vbOK [OK]ボタン
 2 vbCancel [キャンセル]ボタン
 3 vbAbort [中止]ボタン
 4 vbRetry [再試行]ボタン
 5 vbIgnore [無視]ボタン
 6 vbYes [はい]ボタン
 7 vbNo [いいえ]ボタン

これらの数値も、MsgBox関数の定数と同じです。また、指定した時間が経過して自動的にメッセージボックスが閉じたときは、-1が返ります。






このエントリーをはてなブックマークに追加