怠日記

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

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

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

MsgBox 関数はスクリプトの実行方法(WScript.exe/CScript.exe)に関係なく、メッセージボックスを表示する。

構文

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

引数

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

  • buttons :
    後述のボタンの種類、アイコンの種類、既定のボタン、メッセージボックスのモダリティの組み合わせを指定する。

  • title :
    タイトルバーに表示する文字列

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

  • context :
    ヘルプコンテキスト番号

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

ボタンの種類

  • vbOKOnly(0) : [OK] ボタンのみを表示
  • vbOKCancel(1) : [OK]、[キャンセル] ボタンを表示
  • vbAbortRetryIgnore(2) : [中止]、[再試行]、[無視] の各ボタンを表示
  • vbYesNoCancel(3) : [はい]、[いいえ]、[キャンセル] の各ボタンを表示
  • vbYesNo(4) : [はい]、[いいえ] ボタンを表示
  • vbRetryCancel(5) : [再試行]、[キャンセル] ボタンを表示

アイコンの種類

  • vbCritical(16) : [重大なメッセージ] アイコン
  • vbQuestion(32) : [警告クエリ] アイコン
  • vbExclamation(48) : [警告メッセージ] アイコン
  • vbInformation(64) : [情報メッセージ] アイコン

既定のボタン

  • vbDefaultButton1(0) : 1番目のボタンを既定にする
  • vbDefaultButton2(256) : 2番目のボタンを既定にする
  • vbDefaultButton3(512) : 3番目のボタンを既定にする
  • vbDefaultButton4(768) : 4番目のボタンを既定にする

メッセージボックスのモダリティ

  • vbApplicationModal(0) : アプリケーションモーダル。現在のアプリケーションでの作業を続行するには、ユーザーはメッセージボックスに応答する必要がある。
  • vbSystemModal(4096) : システムモーダル。ユーザーがメッセージボックスに応答するまで、すべてのアプリケーションが中断する。
  • vbMsgBoxHelpButton(16384) : メッセージボックスに [ヘルプ] ボタンを追加する。
  • vbMsgBoxSetForeground(65536) : [メッセージ ボックス] ウィンドウを前景ウィンドウとして指定する。
    →試してみたところ効かなかった。VBScript では効果がないのかもしれない。
  • vbMsgBoxRight(524288) : テキストを右揃えにする。
  • vbMsgBoxRtlReading(1048576) : ヘブライ語アラビア語のシステムでテキストが右から左に読む形式で表示されるように指定する。

戻り値

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

  • vbOK(1) : OK
  • vbCancel(2) : Cancel
  • vbAbort(3) : 中止
  • vbRetry(4) : 再試行
  • vbIgnore(5) : 無視
  • vbYes(6) : はい
  • vbNo(7) : いいえ

サンプルコード

Hello World!」を表示する

MsgBox "Hello World!"

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

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

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

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

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 が設定されていた。