【VBA】関数の引数になぜかっこ()を入力するかを解説【Excelマクロ】

MsgBoxを使用するとき引数にかっこ()を付けずにエラーが出たことありませんか?

本記事ではExcelマクロ(VBA)でMsgBox関数や自分で作成した関数を使用する時のかっこの正しい使用方法を解説します。

かっこを入力すべき場合とかっこを入力しなくて良い場合を理由と共に確認できます。
今まで入力していたかっこがの入力理由を理解することで効率よくマクロの作成を行えるようになります!

画像多めで説明しますので是非最後までお付き合いください!

では、確認していきましょう!

この記事を読むと
  • VBAでかっこを入力する場合を理解できる
  • 効率よくVBAを作成することができる

関連記事

かっこを入力する理由

かっこを入力する理由

はじめにかっこを入力する理由ととのような時にかっこを入力する必要があるかを確認してみましょう。

かっこを入力する理由を理解すればどのような時に必要になるかがすぐにわかります。
かっこが必要になる場合のテストを含めて確認していきます

そもそもかっことは?

MsgBox関数を例にします。
関数を使用する時の引数をかっこで囲む場合かっこで囲まない場合があります。本記事ではこのかっこの必要性を考えていきます。

そもそもかっことは?

どのような時にかっこが必要か

どのような時にかっこが必要になるのでしょう?

公式のリファレンスの記載を引用して説明します。

関数の戻り値を使用するには、次の例のように引数をかっこで囲みます。

https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-parentheses-in-code
関数戻り値利用する場合ははかっこで囲む必要がある。

との説明があります。「関数」「戻り値」「利用」を一つずつ考えてみましょう。

MsgBox関数を例に考えてみましょう!

簡単なサンプルプログラムを用意してみました。
サンプルプログラムにはかっこが必要です。

Sub sample1()

    Dim Anser
    Anser = MsgBox("処理を継続してもよろしいですか?", vbYesNo)

End Sub

簡単に処理の内容を説明します。

  • 処理の継続をするかしないかを聞く
  • 結果をanserという関数に代入する
  • 最終的に変数anserの中にはvbYes(はいの場合)かvbNo(いいえの場合)入る

処理の内容をもとに「関数」「戻り値」「利用」を確認してみます。
図とともに確認してみましょう!

かっこが必要な場合

関数

図の①の部分です

例ではMsgBoxが関数です

関数は使用することで表示することができる関数や関数の中で計算した結果を戻り値にするものなどいろいろなものがあります。

MsgBox関数の場合は表示も結果を戻り値にすることもできます

戻り値

図の②の部分です

例ではMsgBox関数向けにボタンを入力した値が戻り値になります
vbYesもしくはvbNoが戻り値として出力されます

利用

図の③の部分です

例では関数で得られた戻り値をAnserという変数に代入しています
変数に代入することで利用することができます。
また、別の関数の引数にそのまま利用することも可能です。

上記の3点「関数」の「戻り値」を「利用」する場合にかっこが必要です!

特に利用する場合ということがポイントです。

かっこ入力が不要な場合

かっこが必要な場合を確認してきましたが今度はかっこが不要な場合を確認してみましょう。
今度もMsgBox関数を使用したサンプルプログラムで確認してみます。

Sub sample1()

    MsgBox "処理を継続してもよろしいですか?",vbYesNo

End Sub

簡単ですがサンプルプログラムの内容は以下です。

  • 処理を継続してもよろしいですか?と出力される。

ここでポイントなのはvbYesNoを入力しているためvbYesとvbNoの入力を求められる点です。
しかし変数に代入しない、すなわち「利用」することがないためかっこで囲む必要はありません。

戻り値を利用する場合利用しない場合の違いが重要なので是非チェックしましょう

かっこ入力が必要なテストプログラム

かっこ入力が必要なテストプログラム

かっこを入力することが必要なプログラムを2つのパターンで確認してみましょう

使用する関数の種類に着目して2つの種類を挙げてみました。

  • 組み込み型関数(初めから用意されている関数)を使用する場合
  • Functionプロシージャで関数を作成したものを利用する場合

組み込み型関数を使用する場合

組み込み型関数を使用する場合です。
InputBox関数を使用したサンプルプログラムを用意しました。

Sub sample3()

    Dim test
    test = InputBox(" テストの点数は?")
    MsgBox test & "点"
    
End Sub

サンプルプログラムでは戻り値を利用しているのでかっこが必要になります。

このプログラムの戻り値はInputBox関数で入力した値になります。

そして戻り値を変数testに代入します。

最終的には変数testの値をMsgBox関数で出力します。
MsgBox関数では戻り値の利用を行わないためかっこの入力は不要です。

Functionプロシージャで関数を作成する場合

Functionプロシージャで作成した関数を使用する場合です。
引数として入力されたの数の2乗した値を返す変数を作成しました。(5行目以降)

作成した変数をSubプロシージャで使用しています(2行目)

Sub sample4()
    MsgBox pow(2)
End Sub

Function pow(num) As Integer
    pow = num * num
End Function

今回のテストではpow関数の戻り値をMsgBox関数で出力しています。

Pow関数の戻り値は2を2乗した数、すなわち4になります。

Pow関数で得られた戻り値をMsgBox関数に利用します。しかし、MsgBox関数の戻り値は使用しないのでMsgBox関数の引数にはかっこがついていません。

このように関数の中に関数を入れることも可能なので戻り値を利用するかしないかで判断すると理解が深まります。

まとめ

まとめ

いかがだったでしょうか?
本記事ではExcelマクロ(VBA)の変数使用時にかっこが必要な場合と不要な場合の確認をしました。

関数」の「戻り値」を「利用」する場合に「かっこ」が必要です!

関数は自分で作成した関数でもVBA既定の関数でも同じです。

本記事の内容を学びかっこが必要かそうでないかを判断することで効率の良いVBA作成につなげてみてください!

では次回の記事でお会いしましょう!