はじめに
ひらちんです。
MsgBox "メッセージ"

画面にメッセージを表示するおなじみの命令ですが、通常の「MsgBox」の命令は、ボタンを操作しないと画面に残ったままになってしまいますね。
操作の進捗具合をちょろっと表示させたいときとかなんかは、自動的に閉じてくれたら嬉しいです。
ということで、今回は自動的に閉じるメッセージボックスを作る方法を紹介します!
CreateObject(“WScript.Shell”)
自動的に閉じれくれるようなメッセージボックスを作るには、Windows Scripting Host(WSH)を利用することによって実現可能です!
Windows Scripting Host(WSH) を利用するには、CreateObjectでWSHのオブジェクトを作ってあげる必要があります。
書き方は次のようになります(^o^)
CreateObject(“WScript.Shell”)
先に変数を用意して、そこにぶち込んどきましょう!
Sub sample()
    Dim WSH As Object
    Set WSH = CreateObject("WScript.Shell")
    
End SubWSHのメッセージボックスは、Popupメソッドで表示させることが出来ます。
Wsh.Popup(strText, [nSecondsToWait], [strTitle], [nType])
引数は以下のようになります。
| 引数名 | 説明 | 
|---|---|
| strText | メッセージボックスに表示する文字列(必須) | 
| nSecondsToWate | メッセージボックスを閉じるまでの時間(秒単位) | 
| strTitle | メッセージボックスの上部のタイトルに入れる文字列 | 
| nType | ボタンの設定及びアイコンの設定 | 
nTypeに指定出来る定数
| 数値 | VBAの定数 | 意味 | 
|---|---|---|
| 0 | vbOKOnly | [OK]ボタン | 
| 1 | vbOKCancel | [OK]ボタンと[キャンセル]ボタン | 
| 2 | vbAbortRetryIgnore | [中止]ボタン、[再試行]ボタン、および[無視]ボタン | 
| 3 | vbYesNoCancel | [はい]ボタン、[いいえ]ボタン、および[キャンセル]ボタン | 
| 4 | vbYesNo | [はい]ボタンと[いいえ]ボタン | 
| 5 | vbRetryCancel | [再試行]ボタンと[キャンセル]ボタン | 
| 16 | vbCritical | ![]()  | 
| 32 | vbQuestion | ![]()  | 
| 48 | vbExclamation | ![]()  | 
| 64 | vbInformation | ![]()  | 
Popupメソッドで表示したメッセージボックスでボタンがクリックされたときに返ってくる数値は以下です。
| 数値 | VBAの定数 | クリックされたボタン | 
|---|---|---|
| 1 | vbOK | [OK]ボタン | 
| 2 | vbCancel | [キャンセル]ボタン | 
| 3 | vbAbort | [中止]ボタン | 
| 4 | vbRetry | [再試行]ボタン | 
| 5 | vbIgnore | [無視]ボタン | 
| 6 | vbYes | [はい]ボタン | 
| 7 | vbNo | [いいえ]ボタン | 
指定時間が経過して自動的に閉じたときは「-1」が返ります。
ここでは、
メッセージ(strText)に、「自動で閉じるメッセージボックス」
閉じるまでの時間(nSecondsToWate)に、「3」
タイトル(strTitle)に「ひらちんメッセージ」
nTypeに「vbInformation」を設定してみます。
さっきの続きにいれます。
Sub sample()
    Dim WSH As Object
    Set WSH = CreateObject("WScript.Shell")
    
    WSH.Popup "自動で閉じるメッセージ", 3, "ひらちんメッセージ", vbInformation
    Set WSH = Nothing
    
End Subでは実行してみましょう!
3秒後に閉じますかね。。。ドキドキ
閉じるまでの時間長っ!
3秒で設定してるのに、30以上かかってしまいました。。。
出来てますが、このように挙動は不安定なので実装の際はご注意くださいw





コメント