目次
メッセージボックスを表示します。第一引数に表示するメッセージ、第二引数に表示するボタンの種類を指定します。ボタンが押されるまで処理はストップします。処理を止めずメッセージを表示するだけの場合、FUKIDASI関数を使用します。メッセージボックスの表示に制限時間を設定するにはWshShell.Popup メソッドを使います。
右上のバツをクリックした場合、BTN_CANCEL(2)が返ります。
- 構文
- 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_OK | 1 | [OK]ボタンを表示します。 |
BTN_CANCEL | 2 | [Cancel]ボタンを表示します。 |
BTN_YES | 4 | [はい(Y)]ボタンを表示します。 |
BTN_NO | 8 | [いいえ(N)]ボタンを表示します。 |
BTN_ABORT | 16 | [中止(A)]ボタンを表示します。 |
BTN_RETRY | 32 | [再試行(R)]ボタンを表示します。 |
BTN_IGNORE | 64 | [無視(I)]ボタンを表示します。 |
以下がそれぞれ表示されるボタンです。( )内のアルファベットのキーを押すことで選択することもできます。
複数ボタンの指定
複数のボタンを指定する場合は定数名を論理和(OR)で繋げます。
複数のボタンを指定した場合、メッセージボックスには定数の順番に関係なく左からはい、いいえ、OK、Cancel、中止、再試行、無視の順にボタンが表示されます。
MSGBOX("処理を実行してもよろしいですか?", BTN_YES OR BTN_NO)
よく使う組み合わせを定数として定義しておくと引数を簡潔に書けます。使いたいボタンの定数を論理和(OR)で繋げて書きます。頻繁に使う場合は以下の定数を定義しておくと良いです。
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
以下は数値を直接指定したものです。
CONST OKOnly = 1
CONST OKCancel = 3
CONST AbortRetryIgnore = 112
CONST YesNoCancel = 14
CONST YesNo = 12
CONST RetryCancel = 34
以下のボタンの組み合わせはExcel VBAを参考にしています。
定数名 | 値 | 説明 |
---|---|---|
OKOnly | 1 | [OK]ボタンのみを表示します。 |
OKCancel | 3 | [OK]ボタンと[Cancel]ボタンを表示します。 |
AbortRetryIgnore | 112 | [中止]、[再試行]、[無視]の各ボタンを表示します。 |
YesNoCancel | 14 | [はい]、[いいえ]、[キャンセル] の各ボタンを表示します。 |
YesNo | 12 | [はい]ボタンと[いいえ]ボタンを表示します。 |
RetryCancel | 34 | [再試行]ボタンと[キャンセル]ボタンを表示します。 |
以下はこれら定数の表示例です。
-
- OKOnly
-
- OKCancel
-
- AbortRetryIgnore
-
- YesNoCancel
-
- YesNo
-
- RetryCancel
これらの定数を使うことで、以下のようにはいといいえのボタンをYesNoで簡潔に書くことができます。
CONST YesNo = 12
MSGBOX("処理を実行してもよろしいですか?", YesNo)
ボタン種別に128の倍数の値を指定した場合、いずれのボタンも表示されません。この場合は右上のキャンセルボタンでダイアログを閉じます。
PRINT MSGBOX("ボタンの表示なし", 128)
フォーカスボタン
メッセージボックスが表示されたときのデフォルトのフォーカスの位置を指定することができます。省略した場合、一番左のボタンがデフォルトのフォーカスボタンになります。
定数名 | 値 | 説明 |
---|---|---|
BTN_OK | 1 | [OK]ボタンを表示します。 |
BTN_CANCEL | 2 | [Cancel]ボタンを表示します。 |
BTN_YES | 4 | [はい(Y)]ボタンを表示します。 |
BTN_NO | 8 | [いいえ(N)]ボタンを表示します。 |
BTN_ABORT | 16 | [中止(A)]ボタンを表示します。 |
BTN_RETRY | 32 | [再試行(R)]ボタンを表示します。 |
BTN_IGNORE | 64 | [無視(I)]ボタンを表示します。 |
例えばファイルを削除するメッセージボックスで選択肢としてはい、いいえを表示する場合デフォルトでははいにフォーカスがありますが、いいえにフォーカスを変更します。以下のプログラムではどちらを選択してもファイルが削除されることはありません。
MSGBOX("ファイルを削除します。よろしいですか?", BTN_YES OR BTN_NO,,, BTN_NO)
ユーザーの誤操作防止のためにデフォルトフォーカスの設定は重要です。間違って選択されても大丈夫なボタンにデフォルトボタンを指定します。
条件分岐
メッセージボックスの選択されたボタンで条件分岐をするにはSELECT文を使います。
MSGBOX関数は押されたボタン種別を戻り値として返すので、その値をCASE句で分岐し処理を記述します。
SELECT MSGBOX("ボタンを選択してください。", BTN_YES OR BTN_NO)
// 「はい」
CASE BTN_YES
MSGBOX("「はい」が選択されました。")
// 「いいえ」
CASE BTN_NO
MSGBOX("「いいえ」が選択されました。")
SELEND
以下のプログラムはボタン種別に中止、再試行、無視のボタンを選択したときの処理の流れを表したものです。分岐後の処理を中止のときはEXITEXIT(EXITEXIT文)で強制終了、再試行のときはCONTINUE(CONTINUE文)でWHILE文の先頭に戻る、無視のときはBREAK(BREAK文)でループを抜けるという処理を行っています。WHILE文の中に再試行したときの処理を記述します。以下のプログラムで再試行するのはランダム値を表示する処理です。
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ブラウザ、メールアドレスの場合そのアドレスを送信先としてメーラーが既定に指定されているソフトで起動します。
既定のブラウザを取得するプログラムです。
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
既定のメーラーを取得するプログラムです。
DIM WshShell = CREATEOLEOBJ("WScript.Shell")
PRINT WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\")
以下はURLにハイパーリンクを設定するプログラムの例です。ハイパーリンクに指定できるのはhttp://・https://から始まるURLのみで、ftp://やfile:///などをリンクに設定することはできません。
MSGBOX("Example Domain<#CR>http://example.com", BTN_OK,,,, TRUE)
以下はメールアドレスにハイパーリンクを設定する例です。mailto:を含めたテキストにリンクが設定されます。
MSGBOX("お問い合わせは以下のメールアドレスに送信してください。クリックするとメーラーが起動します。<#CR><#CR>mailto:info@example.com", BTN_OK,,,, TRUE)
使い方
メッセージを表示するには、第一引数に表示させるメッセージを記述します。
MSGBOX("こんにちは!")
表示するメッセージを途中で改行する場合は特殊文字の<#CR>を使います。
MSGBOX("1行目のテキスト<#CR>2行目のテキスト<#CR>3行目のテキスト")
1行が長文になる場合は、改行する位置でプログラムも改行すると見やすくなります。
MSGBOX("1行目のテキスト<#CR>" + _
"2行目のテキスト<#CR>" + _
"3行目のテキスト")
プログラム実行例
メッセージボックスで処理分岐
IF MSGBOX("メモ帳を起動しますか?", BTN_YES OR BTN_NO) = BTN_YES THEN EXEC("notepad")
MSGBOXの種別の数値から表示されるボタンを取得
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)