MSGBOXメッセージボックス関数

本ページには広告が含まれています。

メッセージボックスを表示します。第一引数に表示するメッセージ、第二引数に表示するボタンの種類を指定します。ボタンが押されるまで処理はストップします。処理を止めずメッセージを表示するだけの場合、FUKIDASI関数を使用します。メッセージボックスの表示に制限時間を設定するにはWshShell.Popup メソッドを使います。

右上のバツをクリックした場合、BTN_CANCEL(2)が返ります。

構文
  1. Integer = MSGBOX( メッセージ, 表示ボタン, X, Y, フォーカスボタン, リンクフラグ )
引数
メッセージ (String)必須
表示メッセージ
表示ボタン (#msgbox = BTN_OK)省略可
ボタン種別(複数指定可、デフォルトはBTN_OK
BTN_YES(4)、BTN_NO(8)、BTN_OK(1)、BTN_CANCEL(2)、BTN_ABORT(中止)(16)、BTN_RETRY(再試行)(32)、BTN_IGNORE(無視)(64)
X、Y (Integer = 中央)省略可
表示位置 X、Y (デフォルトは中央、 -1,-1にて前回位置)
フォーカスボタン (#msgbox = BTN_OK)省略可
デフォルトとしてフォーカスを与えるボタン種別
リンクフラグ (Boolean = False)省略可
TRUEにするとhttp://, mailto:表記のある部分はリンク形式にする (デフォルト FALSE)
戻り値
押されたボタン種別

ボタンの種類

MSGBOX関数の第二引数にはボタンの種類を指定することができます。この引数を省略した場合は[OK]ボタンのみが表示されます。

定数名説明
BTN_OK1[OK]ボタンを表示します。
BTN_CANCEL2[Cancel]ボタンを表示します。
BTN_YES4[はい(Y)]ボタンを表示します。
BTN_NO8[いいえ(N)]ボタンを表示します。
BTN_ABORT16[中止(A)]ボタンを表示します。
BTN_RETRY32[再試行(R)]ボタンを表示します。
BTN_IGNORE64[無視(I)]ボタンを表示します。

以下がそれぞれ表示されるボタンです。( )内のアルファベットのキーを押すことで選択することもできます。

[はい].png [いいえ].png [OK].png [Cancel].png [再試行].png [中止].png [無視].png

複数ボタンの指定

複数のボタンを指定する場合は定数名を論理和(OR)で繋げます。

複数のボタンを指定した場合、メッセージボックスには定数の順番に関係なく左からはいいいえOKCancel中止再試行無視の順にボタンが表示されます。

UWSC
MSGBOX("処理を実行してもよろしいですか?", BTN_YES OR BTN_NO)

よく使う組み合わせを定数として定義しておくと引数を簡潔に書けます。使いたいボタンの定数を論理和(OR)で繋げて書きます。頻繁に使う場合は以下の定数を定義しておくと良いです。

UWSC
CONST OKOnly = BTN_OK                                          // 1
CONST OKCancel = BTN_OK OR BTN_CANCEL                          // 3
CONST AbortRetryIgnore = BTN_ABORT OR BTN_RETRY OR BTN_IGNORE  // 112
CONST YesNoCancel = BTN_YES OR BTN_NO OR BTN_CANCEL            // 14
CONST YesNo = BTN_YES OR BTN_NO                                // 12
CONST RetryCancel = BTN_RETRY OR BTN_CANCEL                    // 34

以下は数値を直接指定したものです。

UWSC
CONST OKOnly = 1
CONST OKCancel = 3
CONST AbortRetryIgnore = 112
CONST YesNoCancel = 14
CONST YesNo = 12
CONST RetryCancel = 34

以下のボタンの組み合わせはExcel VBAを参考にしています。

定数名説明
OKOnly1[OK]ボタンのみを表示します。
OKCancel3[OK]ボタンと[Cancel]ボタンを表示します。
AbortRetryIgnore112[中止]、[再試行]、[無視]の各ボタンを表示します。
YesNoCancel14[はい]、[いいえ]、[キャンセル] の各ボタンを表示します。
YesNo12[はい]ボタンと[いいえ]ボタンを表示します。
RetryCancel34[再試行]ボタンと[キャンセル]ボタンを表示します。

以下はこれら定数の表示例です。

  1. OKOnly
    OKOnly.png
  2. OKCancel
    OKCancel.png
  3. AbortRetryIgnore
    AbortRetryIgnore.png
  4. YesNoCancel
    YesNoCancel.png
  5. YesNo
    YesNo.png
  6. RetryCancel
    RetryCancel.png

これらの定数を使うことで、以下のようにはいいいえのボタンをYesNoで簡潔に書くことができます。

UWSC
CONST YesNo = 12

MSGBOX("処理を実行してもよろしいですか?", YesNo)
YesNo例.png

ボタン種別に128の倍数の値を指定した場合、いずれのボタンも表示されません。この場合は右上のキャンセルボタンでダイアログを閉じます。

UWSC
PRINT MSGBOX("ボタンの表示なし", 128)
.png

フォーカスボタン

メッセージボックスが表示されたときのデフォルトのフォーカスの位置を指定することができます。省略した場合、一番左のボタンがデフォルトのフォーカスボタンになります。

定数名説明
BTN_OK1[OK]ボタンを表示します。
BTN_CANCEL2[Cancel]ボタンを表示します。
BTN_YES4[はい(Y)]ボタンを表示します。
BTN_NO8[いいえ(N)]ボタンを表示します。
BTN_ABORT16[中止(A)]ボタンを表示します。
BTN_RETRY32[再試行(R)]ボタンを表示します。
BTN_IGNORE64[無視(I)]ボタンを表示します。

例えばファイルを削除するメッセージボックスで選択肢としてはいいいえを表示する場合デフォルトでははいにフォーカスがありますが、いいえにフォーカスを変更します。以下のプログラムではどちらを選択してもファイルが削除されることはありません。

UWSC
MSGBOX("ファイルを削除します。よろしいですか?", BTN_YES OR BTN_NO,,, BTN_NO)

ユーザーの誤操作防止のためにデフォルトフォーカスの設定は重要です。間違って選択されても大丈夫なボタンにデフォルトボタンを指定します。

条件分岐

メッセージボックスの選択されたボタンで条件分岐をするにはSELECT文を使います。

MSGBOX関数は押されたボタン種別を戻り値として返すので、その値をCASE句で分岐し処理を記述します。

UWSC
SELECT MSGBOX("ボタンを選択してください。", BTN_YES OR BTN_NO)
	// 「はい」
	CASE BTN_YES
		MSGBOX("「はい」が選択されました。")
	// 「いいえ」
	CASE BTN_NO
		MSGBOX("「いいえ」が選択されました。")
SELEND

以下のプログラムはボタン種別に中止再試行無視のボタンを選択したときの処理の流れを表したものです。分岐後の処理を中止のときはEXITEXITEXITEXIT文)で強制終了、再試行のときはCONTINUECONTINUE文)でWHILE文の先頭に戻る、無視のときはBREAKBREAK文)でループを抜けるという処理を行っています。WHILE文の中に再試行したときの処理を記述します。以下のプログラムで再試行するのはランダム値を表示する処理です。

UWSC
FUKIDASI("何らかの処理")
SLEEP(1.500)

WHILE TRUE
	FUKIDASI(RANDOM(100),,,, 20)
	SLEEP(1.500)
	FUKIDASI()
	SELECT MSGBOX("ボタンを選択してください。", BTN_ABORT OR BTN_RETRY OR BTN_IGNORE)
		CASE BTN_ABORT
			EXITEXIT
		CASE BTN_RETRY
			CONTINUE
		CASE BTN_IGNORE
			BREAK
	SELEND
WEND

FUKIDASI("処理を続行します。")
SLEEP(1.500)

リンクフラグ

リンクフラグをTrueにすると、http://から始まるURLやmailto:から始まるメールアドレスをリンク形式にします。

リンクをクリックするとURLの場合はWebブラウザ、メールアドレスの場合そのアドレスを送信先としてメーラーが既定に指定されているソフトで起動します。

既定のブラウザを取得するプログラムです。

UWSC
DIM WshShell = CREATEOLEOBJ("WScript.Shell")

DIM browser = WshShell.RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\ProgId")

IFB browser = "MSEdgeHTM" THEN
	PRINT "Microsoft Edge"
ELSEIF browser = "ChromeHTML" THEN
	PRINT "Google Chrome"
ELSEIF browser = "IE.HTTP" THEN
	PRINT "Internet Explorer"
ELSEIF POS("FirefoxURL-", browser) THEN
	PRINT "Firefox"
ELSE
	PRINT browser
ENDIF

既定のメーラーを取得するプログラムです。

UWSC
DIM WshShell = CREATEOLEOBJ("WScript.Shell")
PRINT WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\")

以下はURLにハイパーリンクを設定するプログラムの例です。ハイパーリンクに指定できるのはhttp://https://から始まるURLのみで、ftp://file:///などをリンクに設定することはできません。

UWSC
MSGBOX("Example Domain<#CR>http://example.com", BTN_OK,,,, TRUE)
URL.png

以下はメールアドレスにハイパーリンクを設定する例です。mailto:を含めたテキストにリンクが設定されます。

UWSC
MSGBOX("お問い合わせは以下のメールアドレスに送信してください。クリックするとメーラーが起動します。<#CR><#CR>mailto:info@example.com", BTN_OK,,,, TRUE)
メール.png

使い方

メッセージを表示するには、第一引数に表示させるメッセージを記述します。

UWSC
MSGBOX("こんにちは!")
.png

表示するメッセージを途中で改行する場合は特殊文字<#CR>を使います。

UWSC
MSGBOX("1行目のテキスト<#CR>2行目のテキスト<#CR>3行目のテキスト")
.png

1行が長文になる場合は、改行する位置でプログラムも改行すると見やすくなります。

UWSC
MSGBOX("1行目のテキスト<#CR>" + _
		"2行目のテキスト<#CR>" + _
		"3行目のテキスト")

プログラム実行例

メッセージボックスで処理分岐

UWSC
IF MSGBOX("メモ帳を起動しますか?", BTN_YES OR BTN_NO) = BTN_YES THEN EXEC("notepad")
使用関数

MSGBOXの種別の数値から表示されるボタンを取得

UWSC
HASHTBL type

type[BTN_YES] = "はい"
type[BTN_NO] = "いいえ"
type[BTN_OK] = "OK"
type[BTN_CANCEL] = "キャンセル"
type[BTN_ABORT] = "中止"
type[BTN_RETRY] = "再試行"
type[BTN_IGNORE] = "無視"

DIM num = INPUT("数値を入力してください。")

IF VAL(num) = ERR_VALUE THEN EXIT

PRINT num
PRINT "----------"

FOR n = 0 TO 6
	IF (num AND POWER(2, n)) <> 0 THEN PRINT type[POWER(2, n)]
NEXT

MSGBOX("以下のボタンが表示されます", num)
結果
プレーンテキスト
22
----------
キャンセル
はい
中止

関連記事

INPUT関数 (スクリプト関数)
インプットボックスを表示します。第一引数に表示するメッセージ、第二引数にデフォルト値、第三引数にアスタリスク表示にするかのBoolean値を指定します。
ChooseColorA(Comdlg32.dll)