「vbmsgboxresultの使いかた」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
VBAのMsgBox関数の戻り値を受け取る変数を、おそらくIntegerやLongで宣言してらっしゃる方による検索でしょう。
VbMsgBoxResultを使ったサンプルマクロ
VbMsgBoxResult列挙型を使った簡単なSubプロシージャをご紹介しておきます。
Dim ans As VbMsgBoxResult
ans = MsgBox("ボタンを押してください。", vbYesNo)
If ans = vbYes Then
MsgBox "「はい」が押されました。"
End If
VbMsgBoxResultは、上記のマクロのようにMsgBox関数の戻り値を代入する変数の宣言文で使います。
VbMsgBoxResultとは
マクロ初心者のうちは、MsgBox関数の戻り値を代入する変数は、IntegerやLongでも十分だと思います。
ですが、オブジェクトブラウザーで調べるとわかるとおり、そもそもMsgBox関数はVbMsgBoxResult列挙型に定義されている定数を返すように作られているのです。
このVbMsgBoxResult列挙型には、MsgBox関数の戻り値による条件分岐文を書くときに使う、vbYesやvbNoなどの定数も定義されています。
値順に並べると以下のとおりです。
定数 | 値 |
---|---|
vbOK | 1 |
vbCancel | 2 |
vbAbort | 3 |
vbRetry | 4 |
vbIgnore | 5 |
vbYes | 6 |
vbNo | 7 |
この、そもそもの作りにしたがってコードを書けば、上記のように宣言するのがMsgBox関数の本来の使い方です。
VbMsgBoxResultで宣言すれば自動メンバー表示が行われてコーディングも楽
上記のように
Dim ans As VbMsgBoxResult
と宣言しておけば、コーディング時に、下図のような自動メンバー表示が行われ、コーディングも楽になります。
MsgBox関数の戻り値を代入する変数をIntegerやLongで宣言していた場合には、このようなメンバー表示は行われません。
オブジェクト変数の宣言を、
Dim rng as Object
とした場合は自動メンバー表示されることはありませんが、
Dim rng as Range
としておけば、自動メンバー表示されコーディングが楽になるのと同じ話です。
最終更新日時:2019-12-03 15:57
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VbMsgBoxResult型とは