VBScriptでメッセージボックスを上手く活用しよう

VBScript(Visual Basic Scripting Edition)は、Windows環境でスクリプトを実行するための軽量なプログラミング言語です。

その中でも、メッセージボックス(MsgBox)機能は、ユーザーとの対話を実現するための重要な要素です。

本記事では、VBScriptのメッセージボックスの使い方や応用例を詳しく解説し、最後には実践的な演習問題も用意しています。

メッセージボックスの基本

メッセージボックスは、ユーザーに情報を提供したり、質問を投げかけたりするためのダイアログボックスのことです。

ダイアログボックスってなんじゃろうか・・・

入力を促すために表示される小さなウィンドウのことですよ!

VBScriptでは、MsgBox関数を使って簡単にメッセージボックスを表示することができます。

基本的な構文は以下の通りです。

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

prompt(プロンプト)

必須で必要な引数で、「促す」という意味の英単語です。

メッセージとして表示する値を文字列で指定します。

文字列は、ダブルクォーテーションで囲んだ文字のことで、文字を代入した変数も引数として渡すことができます。

使用する文字の幅にもよりますが、最大で約1024文字入力できます。

メッセージを複数行表示させたい場合は、下記の記述例のように「vbCrLf」を用いることで表示できます。

「&(アンパサンド)」は、文字列を結合させたいときに使用します。

また、メッセージの文字を表示させたくない場合は、「MsgBox “”」を入力してください。

MsgBox "メッセージボックスを" & vbCrLf & "使ってみよう!", vbYesNoCancel, "タイトル"

buttons(ボタン)

省略可能な任意で入力する引数です。

表示させるボタンの数と種類を指定します。省略した場合は、「OK」ボタンのみ表示されます。

省略方法は、カンマが2つ連続するように記述するか引数「prompt」のみ入力します。

MsgBox "メッセージボックスを使ってみよう!",, "タイトル"
'または
MsgBox "メッセージボックスを使ってみよう!"

ボタンの種類の一覧を紹介します。

定数表示されるボタンやアイコンの種類と補足
vbOKOnly0「OK」ボタン
vbOKCancel1「OK」と「キャンセル」ボタン
vbAbortRetryIgnore2「中止」と「再試行」と「無視」ボタン
vbYesNoCancel3「はい」と「いいえ」と「キャンセル」ボタン
vbYesNo4「はい」と「いいえ」ボタン
vbRetryCancel5「再試行」と「キャンセル」ボタン
vbCritical16「重大なメッセージ」アイコン
vbQuestion32「警告クエリ」アイコン
vbExclamation48「警告メッセージ」アイコン
vbInformation64「情報メッセージ」アイコン
vbDefaultButton10左から1番目に表示されているボタンがアクティブになる
vbDefaultButton2256左から2番目に表示されているボタンがアクティブになる
※2番目が存在しない場合は、vbDefaultButton1と同等
vbDefaultButton3512左から3番目に表示されているボタンがアクティブになる
※3番目が存在しない場合は、vbDefaultButton1と同等
vbDefaultButton4768左から4番目に表示されているボタンがアクティブになる
※4番目が存在しない場合は、vbDefaultButton1と同等
vbApplicationModal0メッセージボックスに応答するまで実行しているVBScriptのプログラムが進まない
vbSystemModal4096メッセージボックスに応答するまで、すべてのアプリケーションが中断する
※私の環境では特に変化なしでした
vbMsgBoxHelpButton16384「ヘルプ」ボタンを追加
vbMsgBoxSetForeground65536前景ウィンドウとして指定する
※私の環境では特に変化なしでした
vbMsgBoxRight524288テキストを右揃えにする
vbMsgBoxRtlReading1048576ヘブライ語とアラビア語のシステムでテキストが右から左に読む形式で表示される

ご紹介した定数は、組み合わせて使用することができます。

例えば「警告メッセージ」と「はい」「いいえ」「キャンセル」ボタンの組み合わせは、下記のように「vbExclamation + vbYesNoCancel」と記述します。

「+(プラス)」は、数値を足したいときに使用します。

Const vbYesNoCancel = 3
Const vbExclamation = 48
MsgBox "メッセージボックスを使ってみよう!", vbExclamation + vbYesNoCancel, "タイトル"

title(タイトル)

省略可能な任意で入力する引数です。

メッセージボックスの上部に表示させるタイトル部分の値を文字列で入力します。

helpfile(ヘルプファイル)

context(コンテキスト)

省略可能な任意で入力する引数です。

この引数を指定することで「ヘルプ」ボタンが表示され、ヘルプボタンを左クリックすることで、コンパイルされたヘルプファイル(拡張子chm)などを呼び出すことができます。

ヘルプファイルとは、使い方や注意事項が書かれている取扱説明書のようなファイルを指します。

VBScriptで書かれたプログラムは、人間が認識しやすいように記述したものでコンピューターは認識できません。

コンパイルとは、コンピューターが記述されたプログラムを認識できるように機械語へ変換することです。

VBScriptでは、この引数を使用できませんので省略しましょう。

VBScriptと親和性のあるプログラミング言語「VBA」では使用できることを確認しています。

この引数を使用する場合は、VBAを検討してください。

メッセージボックスの種類

情報を伝えるメッセージボックス

MsgBox "これは情報を伝えるメッセージボックスです。"

警告を伝えるメッセージボックス

MsgBox "これは警告を伝えるメッセージボックスです。", vbExclamation

エラーを伝えるメッセージボックス

MsgBox "これはエラーを伝えるメッセージボックスです。", vbCritical

質問を投げかけるメッセージボックス

MsgBox "これは質問を投げかけるメッセージボックスです。", vbQuestion + vbYesNo

メッセージボックスの応用

ユーザーからの入力を受け取る

Dim userInput
userInput = InputBox("名前を入力してください:")
MsgBox "こんにちは、" & userInput & "さん!"

条件に応じてメッセージボックスを表示する

Dim answer
answer = MsgBox("続行しますか?", vbQuestion + vbYesNo)
If answer = vbYes Then
    MsgBox "処理を続行します。"
Else
    MsgBox "処理をキャンセルしました。"
End If

どのボタンを押したかが判断できる整数値を取得することができます。

取得するには、Subプロシージャではなく、Functionプロシージャの書き方をします。

取得した整数値がどのボタンを指すか紹介します。

定数ボタン
vbOK1OK
vbCancel2キャンセル
vbAbort3中止
vbRetry4再試行
vbIgnore5無視
vbYes6はい
vbNo7いいえ

右上の「×」ボタンをクリックした場合は、「キャンセル」ボタンと同等の整数値「2」が取得されます。

「キャンセル」ボタンがない場合は、「OK」ボタンと同等の整数値「1」を取得します。

演習問題

以下の演習問題を通じて、メッセージボックスの使用方法を復習しましょう。

演習1:基本的なメッセージボックスの作成

「プログラムが正常に実行されました」というメッセージを表示するメッセージボックスを作成してください。

演習1 解答例
MsgBox "プログラムが正常に実行されました"

演習2:ユーザーの入力に応じた処理の分岐

ユーザーに「データを保存しますか?」と尋ね、ユーザーが「はい」と答えた場合は「データを保存しました」というメッセージを表示し、「いいえ」と答えた場合は「保存をキャンセルしました」というメッセージを表示するスクリプトを作成してください。

演習2 解答例
Dim result
result = MsgBox("データを保存しますか?", vbYesNo, "保存確認")

If result = vbYes Then
    MsgBox "データを保存しました"
Else
    MsgBox "保存をキャンセルしました"
End If

演習3:カスタマイズされたメッセージボックスの作成

アイコンとデフォルトボタンをカスタマイズしたメッセージボックスを作成し、「システムを再起動しますか?」と尋ねるスクリプトを作成してください。

演習3 解答例
MsgBox "システムを再起動しますか?", vbYesNoCancel + vbQuestion + vbDefaultButton2, "再起動確認"

まとめ

VBScriptのMsgBox関数を活用することで、メッセージボックスを効果的に利用できます。

メッセージの種類や表示するボタンを選択し、ユーザーとの対話や情報の提示、デバッグを行いましょう。