アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロ初心者です。
msgboxのretについて教えてください。





★「・・」は省略しています。

If errMsg < > '' '' Then
①ret = Msgbox(err_Msg_・・)
②If ret = vbNo Then ・・・

上記のコードですが、
retは押したボタンという意味なら、
②の、ボタンがNoだったら、というのは理解できるのですが、
①はメッセージ表示なので
始まりのret = は省略していいのでは?と思って消してみるとエラーがでました。
②でretを使うなら①でも使わないと成り立たないということですか?

逆にretを使わずに記述するというのは
このコードに限っては無理なんでしょうか?
(yesかNoで分岐があるから)
別の場所では、
If errMsg < > '' '' Then
の下には、retは使わずにMsgbox()だけ記述しています。yesNoボタンはなくOKボタンのみでした。

選択ボタンがあればretを使う、と覚えて問題ないですか?
すみません、言っている意味が分からないかもしれません…

A 回答 (2件)

> ①はメッセージ表示なので



違います。
表示するだけではありません。
①はメッセージを表示して、表示したメッセージの中で押されたボタンを返す関数です。

MsgBox 関数 (Visual Basic)
https://msdn.microsoft.com/ja-jp/library/139z2az …

| ボタンがクリックされるのを待って、どのボタンがクリックされたのかを示す、整数型 (Integer) の値を返します。

--
> 逆にretを使わずに記述するというのは
> このコードに限っては無理なんでしょうか?

例えば、
If Msgbox(err_Msg_・・) = vbNo Then ・・・
とかって書けば、一時的にMsgboxの返り値を保管するretのような変数は不要です。

コードが読みにくくなる、Msgboxの返り値の確認が面倒になるとかのデメリットもあるので、初心者のうちは元の通りに丁寧に書いた方が良いと思いますが。


> yesNoボタンはなくOKボタンのみでした。

だと、vbNoは返って来ないので、②のifの中の処理は何回やっても実行されないですね。
    • good
    • 3

VBAマクロのバージョン次第ですが



Msgbox err_Msg_・・

とするとMsgBox関数ではなく、MsgBoxステートメントとして使えるかも(?)
    • good
    • 0

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

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