MsgBoxの戻り値の受け取り方
今日は、MsgBoxの戻り値の受け取り方について、二通りをご紹介。
VBEで、MsgBoxの後に "(" を入力すると、下のように表示される。
末尾に" As VbMsgBoxResult " と表示されていることから、戻り値を
VbMsgBoxResult(Enum)で受け取ることが可能と分かる。
VbMsgBoxRsult の メンバーを見ると、例えば vbYes は 6 が設定されている。
従ってMsgBoxの結果を受け取って条件分岐したい場合、例えば次のような書き方が可能だ。
Sub MsgBoxTest1() Dim MsgBoxResult As Long MsgBoxResult = MsgBox("好きますか?", vbYesNo, "伝染るんです") Select Case MsgBoxResult Case vbYes Debug.Print "はい" Case vbNo Debug.Print "いいえ" End Select End Sub
変数に受け取るのも面倒な場合、こんな書き方もできる。
Sub MsgBoxTest2() Select Case MsgBox("好きますか?", vbYesNo, "伝染るんです") Case vbYes Debug.Print "はい" Case vbNo Debug.Print "いいえ" End Select End Sub
※ステップ実行で値を確認しにくいなどの理由から、個人的にはお勧めしません。
私も昔は主に上記の書き方をしていたが、最近は専ら下記で統一している。
Sub MsgBoxTest3() ' 変数の型を VbMsgBoxResult で宣言。 Dim MsgBoxResult As VbMsgBoxResult MsgBoxResult = MsgBox("好きますか?", vbYesNo, "伝染るんです") Select Case MsgBoxResult Case vbYes Debug.Print "はい" Case vbNo Debug.Print "いいえ" End Select End Sub
こうしておくと、入力候補が表示されるなどのメリットがある。
ということで、個人的にはお勧めです。
参考まで。