怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - メッセージボックスを表示する | MsgBox 関数

VBScript でメッセージボックスを表示するには MsgBox 関数を使う。

スクリプトを WScript/CScript のどちらで実行してもメッセージボックスが表示される。

MsgBox 関数

MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])


引数

prompt には表示するメッセージを指定する。
メッセージは CR、LF、CR+LF のいずれかを使って改行できる。

buttons には表示するボタン、アイコンの種類、既定のボタン、メッセージボックスのモダリティの組み合わせを指定する。
(下表の定数を必要なだけ “+” で指定すればいい)

表示するボタン
定数表示するボタン
vbOKOnly0[OK] ボタンのみ
vbOKCancel1[OK]、[キャンセル] ボタン
vbAbortRetryIgnore2[中止]、[再試行]、[無視] ボタン
vbYesNoCancel3[はい]、[いいえ]、[キャンセル] ボタン
vbYesNo4[はい]、[いいえ] ボタン
vbRetryCancel5[再試行]、[キャンセル] ボタン

アイコンの種類
定数アイコンの種類
vbCritical16[重大なメッセージ] アイコン
vbQuestion32[警告クエリ] アイコン
vbExclamation48[警告メッセージ] アイコン
vbInformation64[情報メッセージ] アイコン

既定のボタン
定数既定のボタン
vbDefaultButton101 番目のボタン
vbDefaultButton22562 番目のボタン
vbDefaultButton35123 番目のボタン
vbDefaultButton47684 番目のボタン

メッセージボックスのモダリティ
定数説明
vbApplicationModal0アプリケーション モーダル。
現在のアプリケーションでの作業を続行するには、ユーザーはメッセージ ボックスに応答する必要がある。
vbSystemModal4096システム モーダル。
ユーザーがメッセージボックスに応答するまで、すべてのアプリケーションが中断する。
vbMsgBoxHelpButton16384メッセージボックスに [ヘルプ] ボタンを追加する。
vbMsgBoxSetForeground65536[メッセージボックス] ウィンドウを前景ウィンドウとして指定する。
≪要確認≫
→最前面に固定されなかった。もしかして最前面に固定ではなく、単に初回表示を最前面にするだけの設定か?
vbMsgBoxRight524288テキストを右揃えにする。
vbMsgBoxRtlReading1048576ヘブライ語アラビア語のシステムでテキストが右から左に読む形式で表示されるように指定する。

title にはタイトルバーに表示する文字列を指定する。

helpfile にはヘルプファイルを識別する文字列を指定する。
これを指定した場合、context も必ず指定する。

context にはヘルプコンテキスト番号を指定する。

VBScript では helpfile と context の設定は意味がなさそうである。
ヘルプボタンを押しても何も表示されなかった。



戻り値

押されたボタンを表す整数が返る。

定数説明
vbOK1OK
vbCancel2Cancel
vbAbort3中止
vbRetry4再試行
vbIgnore5無視
vbYes6はい
vbNo7いいえ



例1: 「Hello World!」を表示する

MsgBox "Hello World!"




例2: 確認メッセージを表示する

「はい」と「いいえ」のボタンを持ち、「いいえ」を既定としたメッセージボックスを表示する。

Dim ret
ret = MsgBox("登録します。よろしいですか?", _
             vbYesNo + vbQuestion + vbDefaultButton2, _
             "確認")

If ret = vbYes Then
    'TODO: はいクリック時の処理を書く
ElseIf ret = vbNo Then
    'TODO: いいえクリック時の処理を書く
End If




例3: 0 除算エラーの内容を表示する

「OK」ボタンと「ヘルプ」ボタンを持つメッセージボックスに、実行時エラーの内容を表示する。

On Error Resume Next
Dim val
val = 100 / 0

MsgBox "Error # " & CStr(Err.Number) & " was generated by " & _
           Err.Source & vbLf & vbLf & _
           Err.Description, _
       vbMsgBoxHelpButton, _
       "Error!", _
       Err.Helpfile, _
       Err.HelpContext

ヘルプボタンを押したらスクリプトが異常終了した。原因は不明。
エラーレベル(ERRORLEVEL)は -1073741819 だった。