「自動的に閉じるメッセージボックス」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
VBAではMsgBox関数で、メッセージボックスを表示することができます。
その表示されたメッセージボックスを、自動的に閉じる方法を探している方による検索です。
残念ながらVBAのMsgBox関数で表示されるメッセージボックスは、自動的に閉じることができません。
自動的に閉じるメッセージボックスを表示するサンプルマクロ
自動的に閉じるメッセージボックスを利用するには、WSH(Windows Scripting Host)のWshShell.Popupメソッドを利用するのが簡単です。
Dim wsh As Object 'IWshRuntimeLibrary.WshShell
Set wsh = CreateObject("Wscript.Shell")
wsh.Popup _
Text:="3秒後に自動的に閉じます。", _
SecondsToWait:=3, _
Type:=vbOKOnly
End Sub
上記のマクロを実行すると、
「3秒後に自動的に閉じます。」
と記述されたメッセージボックスが表示され、3秒後に自動的に閉じます。
WshShellオブジェクトをCreateObjectしてから、
Dim wsh As Object
Set wsh = CreateObject("Wscript.Shell")
WshShellオブジェクトPopupメソッドを利用しています。
WshShell.Popupの引数
WshShell.Popupメソッドはオブジェクトブラウザーで確認すると下図のとおり、
Text
SecondToWait
Title
Type
という4つの引数を指定できます。
引数の名前からわかるとおりSecondToWaitに、何秒後に自動的に閉じるかを指定します。
ちなみに、VBAのMsgBox関数は、
Prompt
Buttons
Title
HelpFile
Context
という名前の付けられた5つの引数を指定できます。
同じような意味の引数でも、引数名が一部異なっているので、名前付き引数を利用するときは注意が必要です。
VBA.MsgBox の Prompt が、
WshShell.Popup では Text に該当します。
VBA.MsgBox の Buttons が、
WshShell.Popup では Type に該当します。
ボタンの種類などを指定する引数・Typeには、VBA.MsgBoxのButtonsと同じく、vbYesNoなどの定数で指定することができます。
名前付き引数を使わないで標準引数で指定する場合も、VBA.MsgBoxとWshShell.Popupでは順番が異なりますから要注意です。
WshShell.Popupの戻り値
WshShellのPopupメソッドの戻り値は、基本的にVBAのMsgBox関数と同じです。
自動的に閉じられた場合には「-1」を返してきます。
Windows Script Host Object Modelを参照設定している場合
上記のマクロは参照設定していないことを前提にCreateObjectしていますが、Windows Script Host Object Modelを参照設定している場合は、
CreateObject関数を使わずに、
Sub 自動的に閉じるメッセージボックス()
Dim wsh As IWshRuntimeLibrary.WshShell
Set wsh = New IWshRuntimeLibrary.WshShell
wsh.Popup _
Text:="3秒後に自動的に閉じます。", _
SecondsToWait:=3
Set wsh = Nothing
End Sub
とすることもできます。
最終更新日時:2018-09-24 17:15
- Newer:平成と入力しても今日の日付が表示されない
- Older:基礎的な理解を欠いていたことを認識
Home » WSH・Windows Script Hostの使い方 » 自動的に閉じるメッセージボックス