MsgBox関数で括弧を使う時と使わない時の違いはなにかとの質問をいただきました。
MsgBox関数は、ダイアログボックスにメッセージとボタンを表示し、どのボタンが押されたかを示す整数型の数値を返します。
VBAで括弧が必要かどうかは、戻り値を使うかどうかで決まります。
戻り値とは、ある命令が、その結果として返す値のことです。
例えばワークシート関数のSUM関数を思い浮かべてみましょう。
SUM関数は、引数として渡されたデータを計算した結果を返します。
このようにある命令が、その結果として返す値のことを戻り値といいます。
たとえば次のようなマクロがあったとします。
Sub sample()
Dim Rei As String
Rei = MsgBox("合格ですか?", vbYesNo)
If Rei = vbYes Then
MsgBox "おめでとうヽ(^。^)ノ"
End If
End Sub
このマクロでは、2つのMsgBox関数が使われています。
しかし、最初のMsgBox関数は括弧を使っているのに対し、2つ目のMsgBox関数は括弧を使っていません。
MsgBox関数は、関数であるからには、何らかの結果を返します。
では、MsgBoxは何を返す関数なのでしょうか?
実は、MsgBox関数は、「ユーザーがどのボタンを押したか」という結果を返します。
最初の
Rei = MsgBox("合格ですか?", vbYesNo)
は、ユーザーがどのボタンを押したかという戻り値を、変数「Rei」に格納しています。
これは、その後のIfステートメントで判定するためです。
このようにMsgBoxの戻り値を使っていますから、引数は括弧で囲まなければなりません。
それに対して、2つ目の
MsgBox "おめでとうヽ(^。^)ノ"
は、ユーザーがどのボタンを押したかという戻り値は使っていません。
そもそも「OK」ボタンしか表示していないので、どのボタンが押されたかを判定する必要はありませんね。押されたのは「OK」ボタンに決まっています。
これはただユーザーにメッセージを表示しただけです。
つまり、戻り値を使っていませんから、引数を括弧で囲ってはいけないのです。
このように、関数の戻り値を何かに使うときは、引数を括弧で囲まなければならないのです。
よろしかったら・・・応援クリック・・・お願いします。励みになります。