まえがき
ポップアップメッセージを出したり、[はい][いいえ]を選択させる時には、メッセージボックスコマンドを使い、文字を入力させたりする時にインプットボックスコマンドを使います。
VBAではローカルウィンドウで変数の値は見えますので使う必要は無いですが、Teratarmマクロのようなデバッグ機能の少ないプログラミング言語の場合は、変数の値をメッセージボックスで表示させる方法はよく使いますので、プログラミングの基礎として理解しておきたい知識となります。
本記事でもサンプルコードとしてよく使いますので、コードをみて戸惑う事が無いように、使い方は理解しておいてください。
メッセージボックスとインプットボックスは別コマンドですが、どちらも共通点が多いので同じ記事で説明したいと思います。
メッセージを表示させる
まずは基本の固定のメッセージ表示です。文字列を”で囲んで記載します。
MsgBox “書いた通り表示されるよ“ |
タイトルを表示
つぎにメッセージにタイトルを入れます。タイトルはオプションなので入れない場合は上の例の通り[Microsoft Excel]と表示されます。
オプションは,で区切って入力し、タイトルは3つ目のパラメータなので、メッセージの後ろに,,と2つ区切り文字を入れて記載します。
MsgBox “書いた通り表示されるよ”,,“タイトルが表示されるよ” |
[はい][いいえ]で選択させる
次に[はい][いいえ]で選択をさせるボックスを表示させる方法です。メッセージの後ろにコンマ[,]で区切り、[vbYesNo]と入力します。
SENTAKU = MsgBox(“あなたは勇者ですか?”, vbYesNo) |
[vbYesNo]を[4]に置き換えても動作は同じです。
SENTAKU = MsgBox(“あなたは勇者ですか?”, 4) |
[はい][いいえ]を選択した結果によって、処理を分岐させます。以下はSelect Caseで条件分岐させている例です。Select Caseは条件分岐(Select Case)の使い方で詳細を記載します。
[vbYes]は[はい]が押された時に変数に入る値で、[vbNo]は[いいえ]が押された時に変数に入る値です。緑文字は解説(コメント)です。
Select Case SENTAKU ‘②Select Caseで条件分岐 |
Case vbYes ‘③(はい)が選択された場合 |
MsgBox “「はい」が押されました。”‘④(はい)が選択された場合の処理 |
Case vbNo‘⑤(いいえ)が選択された場合 |
MsgBox “「いいえ」が押されました。”‘⑥(いいえ)が選択された場合の処理 |
End Select‘⑦Select Case終了 |
内容は先ほどと同じ例ですが、[vbYes]は[6]に置き換え、[vbNo]は[7]に置き換えても動作は同じです。
Select Case SENTAKU |
Case 6 |
MsgBox “「はい」が押されました。” |
Case 7 |
MsgBox “「いいえ」が押されました。” |
End Select |
選択ボタンの種類
[はい][いいえ]で表示させるボタン以外にも、次のようなボタンを表示させる事ができます。
[OK] ボタンと [キャンセル] ボタンを表示
SENTAKU = MsgBox(“勇者になりたいですか?”, vbOKCancel) |
[vbOKCancel]を[1]に置き換えても動作は同じです。
SENTAKU = MsgBox(“勇者になりたいですか?”, 1) |
[中止]、[再試行]、 [無視] の 3 つのボタンを表示
SENTAKU = MsgBox(“勇者への転職が失敗しました”, vbAbortRetryIgnore) |
[vbAbortRetryIgnore]を[2]に置き換えても動作は同じです。
SENTAKU = MsgBox(“勇者への転職が失敗しました”, 2) |
[はい]、[いいえ]、[キャンセル] の 3 つのボタンを表示
SENTAKU = MsgBox(“勇者の仲間になりますか”, vbYesNoCancel) |
[vbYesNoCancel]を[3]に置き換えても動作は同じです。
SENTAKU = MsgBox(“勇者の仲間になりますか”, 3) |
[再試行] ボタンと [キャンセル] ボタンを表示
SENTAKU = MsgBox(“転職が失敗しました”, vbRetryCancel) |
[vbYesNoCancel]を[5]に置き換えても動作は同じです。
SENTAKU = MsgBox(“転職が失敗しました”, 5) |
選択ボタンの種類をまとめ
選択ボタンの種類をまとめるとこうなります。
グループ | 定数 | 値 | 内容 |
ボタンの種類 | vbOKCancel | 1 | [OK] ボタンと [キャンセル] ボタンを表示 |
vbAbortRetryIgnore | 2 | [中止]、[再試行]、[無視] の 3 つのボタンを表示 | |
vbYesNoCancel | 3 | [はい]、[いいえ]、[キャンセル] の 3 つのボタンを表示 | |
vbYesNo | 4 | [はい] ボタンと [いいえ] ボタンを表示 | |
vbRetryCancel | 5 | [再試行] ボタンと [キャンセル] ボタンを表示 |
結果を変数に入れる
先ほどのボタンをクリックした時に変数に入る値は次のようになります。説明は[vbYes][vbNo]と同じなので、パラメータだけ記載します。
定数 | 値 | 説明 |
vbOK | 1 | [OK] |
vbCancel | 2 | [キャンセル] |
vbAbort | 3 | [中止] |
vbRetry | 4 | [再試行] |
vbIgnore | 5 | [無視] |
vbYes | 6 | [はい] |
vbNo | 7 | [いいえ] |
アイコンを変更する
ポップアップで表示されるボックスにアイコンを付ける事ができます。
警告メッセージ アイコンを表示
例として警告メッセージ アイコンを表示します。
MsgBox “警告ボタンです”, vbCritical |
[vbCritical]を[16]に置き換えても動作は同じです。
MsgBox “警告ボタンです”, 16 |
説明が長くなるので以降は数値への置き換えの説明は省略し、最後に一覧で載せます。
問い合わせメッセージ アイコンを表示
MsgBox “問い合わせる”, vbQuestion |
注意メッセージ アイコンを表示
アイコンだけでなくWindowsのシステム通知の音も鳴ります。
MsgBox “注意して下さい”, vbExclamation |
情報メッセージ アイコンを表示
アイコンだけでなくWindowsのシステム通知の音も鳴ります。
MsgBox “情報です”, vbInformation |
アイコンの種類のまとめ
アイコンの種類を変更する定数と値をまとめるとこうなります。
グループ | 定数 | 値 | 内容 |
アイコンの種類 | vbCritical | 16 | 警告メッセージ アイコンを表示 |
vbQuestion | 32 | 問い合わせメッセージ アイコンを表示 | |
vbExclamation | 48 | 注意メッセージ アイコンを表示 | |
vbInformation | 64 | 情報メッセージ アイコンを表示 |
ボタンの種類とアイコンの種類を同時に変更する
ボタンの種類とアイコンの種類を同時に変更する場合は、+(プラス)でつないで記載します。
SENTAKU = MsgBox(“続けますか?”, vbAbortRetryIgnore + vbCritical ) |
文字列を数字に置き換えても結果は同じです。
SENTAKU = MsgBox(“続けますか?”, 2 + 16 ) |
足し算なので、足した数を入れても結果は同じです。
SENTAKU = MsgBox(“続けますか?”, 18) |
初期値で選ばれるボタンを変更する
Enterが連打された場合に、初期値で選択しては危険なボタンになっていると事故が起こる可能性があります。初期値として選ばれるボタンを変更するには、次のようにします。
第 2 ボタンを初期値ボタンにする
SENTAKU = MsgBox(“本当に削除しますか?”, vbYesNoCancel + vbDefaultButton2) |
青い枠が第2ボタン(いいえ)になっています。
文字列を数値に置き換える事もできます。
SENTAKU = MsgBox(“本当に削除しますか?”, 3 + 256) |
足し算なので足した数値でも同じです。
SENTAKU = MsgBox(“本当に削除しますか?”, 259) |
第 3 ボタンを初期値ボタンにする
SENTAKU = MsgBox(“本当に削除しますか?”, vbYesNoCancel + vbDefaultButton3) |
青い枠が第3ボタン(キャンセル)になっています。
初期ボタンのまとめ
初期ボタンの文字列(定数)と数値(値)をまとめるとこうなります。
グループ | 定数 | 値 | 内容 |
初期値ボタン | vbDefaultButton2 | 256 | 第 2 ボタンを初期値ボタンにする |
vbDefaultButton3 | 512 | 第 3 ボタンを初期値ボタンにする |
ボタンの種類やアイコンの種類と+で組み合わせる事もできます。
SENTAKU = MsgBox(“第2ボタンをあげる””, vbYesNoCancel + vbExclamation + vbDefaultButton2) |
同様に数値に置き換えたり、足した数字で表現しても結果は同じです。
SENTAKU = MsgBox(“第2ボタンをあげる”, 3 + 48 + 256) |
SENTAKU = MsgBox(“第2ボタンをあげる”, 307) |
メッセージの改行表示
メッセージボックスもインプットボックスも共通で、メッセージを2行以上で表示させる場合は[vbLf ]で改行させます。文字列を接続させる時は間に&を入れてつなぎます。
MsgBox “一行目” & vbLf & “二行目” |
HENSUU = InputBox (“一行目” & vbLf & “二行目”) |
インプットボックス
文字を入力させるボックスを表示させる時はインプットボックスを使います。
HENSUU = InputBox(“勇者の名前を入れて下さい。”) |
上の例ではHENSUU(変数)に入れる文字をボックス入力させています。
インプットボックスに初期値として値を入れる
インプットボックスにあらかじめ値を入れる場合はコンマ2つ[,,]で区切って記載します。
HENSUU = InputBox(“勇者の名前を入れて下さい。”,,“ああああ”) |
ちなみにコンマ区切りの2つ目のところにはタイトルを入れる事もできます。
HENSUU = InputBox(“勇者の名前を入れて下さい。”,“タイトル”,”ああああ”) |
変数を表示
メッセージボックスもインプットボックスも共通で、変数に入った文字を表示させる事ができます。変数は”で囲わないでください。
HENSUU = InputBox(“勇者の名前を入れて下さい。”) |
MsgBox “私は勇者” & HENSUU & ”だ!” |
メッセージボックスとインプットボックスの解説は以上となります。
メッセージボックスだけでも、色々なオプションがあり結構奥が深い事が分かりましたが、基本的な使い方を理解しておけば、あとはこのページの情報を参考に必要な時に使えれば問題ないです。