トップページ

#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」を指定すれば[いいえ]ボタンが標準ボタンになります。