'「中止・再試行・無視」ボタンで分岐 Select Case MsgBox(Prompt:="データ欠損!(無視で強制起動)", Buttons:=vbAbortRetryIgnore) Case vbAbort '中止をクリックしたときの処理 Case vbRetry '再試行をクリックしたときの処理 Case Else 'それ以外(無視)をクリックしたときの処理 End Select
'「はい・いいえ・キャンセル」ボタンで分岐 Select Case MsgBox(Prompt:="データを上書きします(いいえで新規追加)", Buttons:=vbYesNoCancel) Case vbYes 'はいをクリックしたときの処理 Case vbNo 'いいえをクリックしたときの処理 Case Else 'それ以外(×ボタンかキャンセル)をクリックしたときの処理 End Select
「MsgBox」関数では最大3択のボタンを表示することが出来ます
そのボタンによって対話型のより複雑な処理分岐が可能になります
(MsgBoxの基本の使い方についてはこちら)
また2択ではIf分岐を使用しましたが、ここではSelect分岐を使用します
それぞれのボタン名で分岐の処理を行います
(Select分岐の解説はこちら)
3択には2種類あります
引数「Buttons」に「vbAbortRetryIgnore」を指定すると「中止・再試行・無視」の3択になります
それぞれの各大文字部分からがボタンの名前です
なので戻り値の定数もその名前で指定すればいいだけです
また、キャンセルボタンが無いので×ボタンが使用不可になっています(グレー表示になり無効状態)
「vbYesNoCancel」を指定すると「はい・いいえ・キャンセル」の3択になります
単純に2択にあった「はい・いいえ」にキャンセルが追加されただけです
2択の時には無かったキャンセルボタンが追加されたことで、ここでは×ボタンが使用可能になっています
×ボタンとキャンセルは同じ操作とみなされます
数値などの分岐で多数分岐はいくらでもありますが、対話型分岐の3択処理分岐というのはなかなか無いのでシチュエーションが難しかったです
まあ要は2通りの処理と、処理自体のキャンセルという流れになりますがなかなかないで~