引数で()が要るときと要らないときと、要らないけど書けるとき

f:id:Infoment:20191005215416p:plain
引数で、()が要るときと要らないときがある。
【要るとき】

※ただし、引数が無い場合は()不要。

そして、これを混乱させる理由の一つが、下記サンプルの三番目ではないかと推測する。

Sub Sample()
    ' Callする場合。
    Call MsgBox("おはようございます。")

    ' 戻り値がある場合。
    Dim MsgboxResult As VbMsgBoxResult
        MsgboxResult = MsgBox("こんにちは", vbOK + vbExclamation)

    ' Callもせず戻り値もないが、()が付けられる場合。
    MsgBox ("こんばんは。")
End Sub


この「Callもせず戻り値もないが、()が付けられる場合」は、引数が複数になった途端、エラーになる。
f:id:Infoment:20191005214545p:plain

では、なぜ引数が一つのときだけ()が許されるのだろう?
長年の疑問だったのだが、ある人に教わって漸く、この疑問を解くことが出来た。曰く、

「これは、計算式などで登場する()なんです」

つまり、

  • (2+3)÷5

などで登場する、優先して計算されることを示す、あの()だったわけで。
f:id:Infoment:20191005215831p:plain

確かに、計算式で1を(1)と書いても問題はない。違和感は有るが。
しかし計算式で、少なくとも四則演算などに於いては、(1,1)とは書かない。書いても、意味の持たせようがない。なるほどと、腑に落ちた次第。

参考まで。