引数で()が要るときと要らないときと、要らないけど書けるとき
引数で、()が要るときと要らないときがある。
【要るとき】
- Callステートメントでプロシージャを呼び出すとき
- 戻り値があるとき
※ただし、引数が無い場合は()不要。
そして、これを混乱させる理由の一つが、下記サンプルの三番目ではないかと推測する。
Sub Sample() ' Callする場合。 Call MsgBox("おはようございます。") ' 戻り値がある場合。 Dim MsgboxResult As VbMsgBoxResult MsgboxResult = MsgBox("こんにちは", vbOK + vbExclamation) ' Callもせず戻り値もないが、()が付けられる場合。 MsgBox ("こんばんは。") End Sub
この「Callもせず戻り値もないが、()が付けられる場合」は、引数が複数になった途端、エラーになる。
では、なぜ引数が一つのときだけ()が許されるのだろう?
長年の疑問だったのだが、ある人に教わって漸く、この疑問を解くことが出来た。曰く、
「これは、計算式などで登場する()なんです」
つまり、
- (2+3)÷5
などで登場する、優先して計算されることを示す、あの()だったわけで。
確かに、計算式で1を(1)と書いても問題はない。違和感は有るが。
しかし計算式で、少なくとも四則演算などに於いては、(1,1)とは書かない。書いても、意味の持たせようがない。なるほどと、腑に落ちた次第。
参考まで。