#6_2 対話型マクロの処理
MsgBoxによる対話型マクロの実現
前回までの内容を踏まえて対話型マクロを書いてみます。次のマクロはシート追加の確認メッセージを表示し、ユーザーが「はい」を選択したらワークシートを追加し、「いいえ」を選んだら何も処理が実行されないというマクロです。
前回までとの一番の大きな違いは、定義した変数BtnにMsgBox関数の出力(戻り値)を代入している点です。実はMsgBox関数の引数である「vbYesNo」などの組み込み定数の正体は整数です。そして、MsgBox関数は選択されたボタンを数値として返すため、その数値を格納するための変数Btnを代入部の左辺に記述しているのです。
また、処理を分岐する際には「If Btn = vbYes Then」の様に記述することで実現できます。
ボタン | 組み込み定数 | 値 |
---|---|---|
[OK] | vbOK | 1 |
[キャンセル] | vbCancel | 2 |
[中止] | vbAbort | 3 |
[再試行] | vbRetry | 4 |
[無視] | vbIgnore | 5 |
[はい] | vbYes | 6 |
[いいえ] | vbNo | 7 |
MsgBox関数の標準ボタン
標準ボタンとは聞きなれない言葉だと思いますが、下のダイアログボックスは[いいえ]ボタンが浮き出ています。この場合、[いいえ]ボタンが標準ボタンになっているということです。
このダイアログボックスでEnterキーを押すと、標準ボタンである[いいえ]がクリックされたことになります。
削除の確認等のダイアログボックスでは、誤ってデータを削除しないように、[いいえ]ボタンを標準ボタンにするのが定番です。
標準ボタンの変更には、MsgBox関数の第2引数(Buttons)に「vbDefaultButton」を指定します。今回の場合だと第2引数に「vbDefaultButton2」を指定すれば[いいえ]ボタンが標準ボタンになります。