'「OK・キャンセル」ボタンで分岐 If MsgBox(Title:="実行確認", Prompt:="処理を実行します", Buttons:=vbOKCancel) = vbOK Then 'OKをクリックしたときの処理 Else '×ボタンかキャンセルをクリックしたときの処理 End If
'「はい・いいえ」ボタンで分岐 If MsgBox(Title:="実行確認", Prompt:="処理を実行します", Buttons:=vbYesNo) = vbYes Then 'はいをクリックしたときの処理 Else 'いいえをクリックしたときの処理 End If
'「再試行・キャンセル」ボタンで分岐 If MsgBox(Title:="エラー発生", Prompt:="対象のフォルダが見つかりません", Buttons:=vbRetryCancel) = vbRetry Then '再試行をクリックしたときの処理 Else '×ボタンかキャンセルをクリックしたときの処理 End If
ユーザーに処理の選択をさせる場合に使用するのがメッセージのボタン分岐です
「MsgBox」関数の引数「Buttons」の設定を行うことで表示されるボタンが指定できます
MsgBoxは関数なので戻り値を取得できます
選択肢の無いメッセージでは、引数を()でくくりませんでした
これは戻り値を取得するかどうかで変わるものです
()を使用すると戻り値を取得できるようになります
戻り値は、ユーザーのクリックしたボタンが何かを返す数値です
分岐なので、その戻り値をIfを使って条件分岐を行います
(Ifの分岐処理についてはこちら)
2択の中では3種類あります
1つ目は、OKボタンとキャンセルボタンの2つが表示されます
最もスタンダードなものとなりますので、ユーザーもクリックを迷いづらいです
×ボタンをクリックした場合は、キャンセルボタンをクリックしたものとみなされます
×ボタンも入れれば3択ですが実際はちゃんと2択になります
2つ目の、はいといいえに関しては、キャンセルボタンが無いためキャンセルの戻り値を返せません
そのため×ボタンが使用できない状態になっています(グレー表示となり無効状態)
どうしても×を押されるのが嫌な場合は、このボタン指定を行ってください
3つ目は、1つ目と同じですが、ボタンの文字が再試行になっています
再試行なので、1度処理を実行した後に完了できない場合に使用するボタンですね
このメッセージで処理が停止している間にフォルダを作成するなどして、処理を再試行することが可能になります
条件分岐のための、Ifの条件式の右辺に戻り値の定数を指定します
定数は指定したボタン名を入れればいいだけですね
なので、1つ目のコードでOKではなくキャンセルを条件としたい場合は「MsgBox( ~~ ) = vbCancel」という定数を指定すれば可能です
処理時間の長い処理などの実行前には必ずこのコードで実行確認を行いましょう
間違って処理開始ボタンを押してしまう可能性も考慮してあげましょう