MsgBoxでメッセージを表示する~ユーザーに問いかける

お引越し通知

[ お知らせ ]
この記事は、2017年10月07日に、FC2ブログからこちらのサイト(kazushikato.info)へ移転したものです。

ありとあらゆるアプリケーションでメッセージボックスは必ずといっていいほど表示されます。エクセルVBAでも例外ではありません。メッセージボックスは「OK」を押すだけのものから、Yes,Noの二つのボタンがあるものなど、それプラス「キャンセル」や「無視」など様々なボタンで使っている人へ問いかけるものを作ることができます。

私も最初にメッセージボックスを作ったときにはとても感動しました。プロたちが作ったアプリケーションと形もボタンも同じ物を表示することができたからです。(当然といえば当然かもしれませんが)

さて一番単純な物から見てみましょう。下の例は「OK」ボタンのみが表示されるタイプです。
————————————
MsgBox (“転送を終了しました。”)
————————————

この場合は実行すると「転送を終了しました。」という文字と「OK」ボタンのみが表示されるメッセージボックスが現れます。(下記画像参照ください)

OKのみ表示のメッセージボックス
OKのみ表示のメッセージボックス

さて次は、使っている人へ質問を問いかけるメッセージボックスです。問いかけですのでボタンも2種類以上でありその答えを収納するための変数も準備しています。それでは実際のマクロを書いてみます。
————————————-
Rtn = MsgBox(“転送せずに終了します。それでよければOKを押してください。”,
vbOKCancel)
If Rtn = vbOK Then
Unload Cyusya
AboutForm.Show
End If
————————————-

上の例ではRtnがメッセージボックスからの答えを入れるための変数です。変数ですからデータ系を宣言しなければならないのですが私はしておりませんでした。ということは自動的にバリアント型(Variant)になってしまいます。

さてRtn = というのが最初の例とはまず違っていますね。一番最初の例では単に確認のためのメッセージでしたので相手に答えを求めているわけではないからです。それで答えを収納するための変数もなかったのでした。
今回はメッセージを見ている人に答えを求めていますのでその答えを入れる箱(変数)が必要です。それがこのRtnです。

そしてMsgBox(“表示させたいメッセージ”  ←このあとにすぐに丸カッコで閉じずにカンマ+半角スペースのあとにボタンのタイプを指定しています。
この例の場合は vbOKCancel です。「OK」ボタンと「キャンセル」ボタンの二つが表示されます。(下記画像を参照ください)

「OK」と「キャンセル」のメッセージボックス
「OK」と「キャンセル」のメッセージボックス

ユーザーが「OK」もしくは「キャンセル」のボタンを押すと押した値がイコールで結ばれている前のRtnに入ります。それによってその後の処理を変えることができます。

上の例では、{OK}ボタンを押すとRtnに vbOK という値が入ります。vbOKという文字が入るわけではないようで数字の”1”が入るようです。ちなみに vbCancelの場合は”2”が入り、vbYesは”
6”、vbNoは”7”とそれぞれに値が決められています。

メッセージボックスに表示させることができるボタンの種類は多くの種類が用意されており、他にも
vbYesNoCancel ・・・ Yes、No、Cancelボタンを表示
vbYesNo ・・・ Yes、Noボタンを表示
vbRetryCancel ・・・ 再試行、キャンセルボタンを表示
などもあります。

面白い物にはvbCriticalなんていうものもあって、警告メッセージを表示するそうです。(下記画像参照ください)

「警告」のメッセージボックス
「警告」のメッセージボックス