- ベストアンサー
Msgboxの×が押されたとき
VBAでMsgboxの×ボタンが押されたときの 処理はどのように記述できるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
分からないことがあったら、まずはヘルプを見ましょう。ネットでの検索もしましょう。その上で、なお分からない部分について質問してください。回答者の負担を減らすことになり、回答も寄せられやすくなるはずです。 MsgBox 関数の第 2 引数を次のように指定すると、「OK」または「キャンセル」、あるいは、「はい」または「いいえ」の答えを強制することができます。 a=msgbox("文字列",vbokcancel) a=msgbox("文字列",vbyesno) このとき×ボタンや Esc キーを押すと、vbOKCancel では、キャンセル扱いとなります。vbYesNo では、押すことができません。 変数 a に代入されるのは、それぞれの答えを表す Integer 型の定数です。それらの値が実際にいくつであるのかは、MsgBox のヘルプを見るか、Debug.Print メソッドなどで確認してください。 debug.print vbcancel ……コードウィンドウ内で実行 ?vbno ……イミディエイトウィンドウ内で実行 a=msgbox("文字列",vbyesno):?a ……イミディエイトウィンドウ内で実行 vbOKOnly の場合、OK でも×でも答えは vbOK となって、区別が付きません。 第 2 引数の規定は、ヘルプにあるとおり、0(= vbOKOnly)です。そのため第 2 引数を省略すると、vbOKOnly と書いてあるのと同じになります。 なお答えを取得する必要がない場合は代入しないわけですが、その場合 VBA では、( ) を付けない文法になっています。(下のような例外を除き)付けるとエラーです。逆に、代入するときは上のように、( ) を付けます。付けないとエラーです。 msgbox "文字列",vbokcancel msgbox "文字列",vbyesno msgbox("文字列",vbokcancel) ……エラー 例外: 下の各コードは、数式などを括弧でくくっただけで、関数に引数を与えるための括弧ではありません。 そのため、いずれもエラーにはなりません。 msgbox (3) msgbox (3+0)*1 msgbox ("文字列") msgbox ("文字列" &"") &""