【EXCEL VBA】自動的に閉じるメッセージボックスを作る

スポンサーリンク

はじめに

ひらちんです。

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 Sub

WSHのメッセージボックスは、Popupメソッドで表示させることが出来ます。

構文

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

引数は以下のようになります。

引数名説明
strTextメッセージボックスに表示する文字列(必須)
nSecondsToWateメッセージボックスを閉じるまでの時間(秒単位)
strTitleメッセージボックスの上部のタイトルに入れる文字列
nTypeボタンの設定及びアイコンの設定

nTypeに指定出来る定数

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

Popupメソッドで表示したメッセージボックスでボタンがクリックされたときに返ってくる数値は以下です。

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

指定時間が経過して自動的に閉じたときは「-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

コメント

タイトルとURLをコピーしました