プロシージャを呼び出すときの()
先日、職場の勉強会で話題に上がったので、備忘録として記しておく。
例えば、こんなサブプロシージャがあったとする。
Sub Calc(a As Double) MsgBox a * 1.5 End Sub
aという値を受け取って、メッセージボックスにaの1.5倍の数値を表示する。
次に、このようにしてCalcを呼び出してみる。
Sub test() Call Calc(100) End Sub
↓ 結果は、以下の通り。
Call を頭に付けない時は、()を外す。
Sub test() Calc 100 End Sub
ここでよく混乱するのが、()があっても成立するパターン。
Sub test() Calc (100) End Sub
引数が1個の場合、()があっても無くても成立する。
しかし、例えばこんな時は、エラーになる。
Sub Calc(a As Double, b As Double) MsgBox a * b End Sub
Sub test() Calc (a , b) End Sub
長らく「何でだろう?」と思いつつ、そういうもんだと丸暗記していた。
しかし先日、職場の詳しい人に教えてもらい、ようやく腑に落ちた。
Callを付けない時の()は、計算式の()なんですよ。
例えば、(3+4)×5 のような時に使う()ですね。
なるほど、そういうことだったのか。だから、(a,b)で怒られたわけだ。
そんなの常識?
お恥ずかしくも、私は知りませんでしたm(_ _)m
参考まで。