プロが教える店舗&オフィスのセキュリティ対策術

VBAでMsgboxの×ボタンが押されたときの
処理はどのように記述できるのでしょうか?

A 回答 (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 ("文字列" &"") &""
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A