SSブログ

関数・プロシージャの呼び出しとCallステートメント [VBA]

 と、いうか、引数を括弧で囲むかどうかと、Callを書くか書かないかについて。

 まず、括弧について。
 関数やプロシージャを呼び出す場合、関数名(プロシージャ名)の後に括弧「(」「)」を付けるかどうかについてです。
 関数やプロシージャから戻り値を受け取る場合、括弧を付けます。

 例えば、
  MsgBox "テスト", vbInformation
 この場合は、メッセージボックスを表示させるだけなので、括弧なしでOKです。

 戻り値を受け取る下記のような場合は、
  intR = MsgBox("テスト", vbInformation + vbYesNo)
 と、なります。

 また、
  MsgBox("テスト", vbInformation + vbYesNo)
  intR = MsgBox "テスト", vbInformation + vbYesNo
 これらは、構文エラーになります。

 

 次に、Callステートメントについて。
 Callステートメントは、関数名・プロシージャ名の後ろに括弧を付けるけど、戻り値を受け取らない場合に記述します。

 例えば
  Call MsgBox("テスト", vbInformation + vbYesNo)
 このような記述になります。
 最初っから括弧を書かなければCallも書かずに済むのですが、引数部分は括弧で囲んだ方が見やすいとか、戻り値があるけど捨ててることを明示的にしておきたいとか、いや、正確な理由は分かりませんが、こういうことになってます。

 こちらも、下記のような記述は、
  Call MsgBox "テスト", vbInformation + vbYesNo
 構文エラーになります。

 

 さて、なんでこんな事を取り上げたかと言いますと、たまに下記のようなコーディングに遭遇するからです。
  Dim intR As Integer
  intR = MsgBox("テスト", vbInformation)
 たぶんですね、見よう見まねでMsgBoxを使ってみたら、なにやらエラーがでる。なんだかわかんないけど、こうするとエラーにならないから、以後ずっとこうしてる的な感じでしょうか。
 ちゃんと理由を理解してないとこうなります。
 そして、派遣プログラマにはこういう人がたくさんいます。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。