【VBA】関数の引数になぜかっこ()を入力するかを解説【Excelマクロ】
本記事ではExcelマクロ(VBA)でMsgBox関数や自分で作成した関数を使用する時のかっこの正しい使用方法を解説します。
かっこを入力すべき場合とかっこを入力しなくて良い場合を理由と共に確認できます。
今まで入力していたかっこがの入力理由を理解することで効率よくマクロの作成を行えるようになります!
画像多めで説明しますので是非最後までお付き合いください!
では、確認していきましょう!
関連記事
かっこを入力する理由
はじめにかっこを入力する理由ととのような時にかっこを入力する必要があるかを確認してみましょう。
かっこを入力する理由を理解すればどのような時に必要になるかがすぐにわかります。
かっこが必要になる場合のテストを含めて確認していきます
そもそもかっことは?
MsgBox関数を例にします。
関数を使用する時の引数をかっこで囲む場合とかっこで囲まない場合があります。本記事ではこのかっこの必要性を考えていきます。
どのような時にかっこが必要か
どのような時にかっこが必要になるのでしょう?
公式のリファレンスの記載を引用して説明します。
関数の戻り値を使用するには、次の例のように引数をかっこで囲みます。
https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-parentheses-in-code
との説明があります。「関数」「戻り値」「利用」を一つずつ考えてみましょう。
簡単なサンプルプログラムを用意してみました。
サンプルプログラムにはかっこが必要です。
Sub sample1()
Dim Anser
Anser = MsgBox("処理を継続してもよろしいですか?", vbYesNo)
End Sub
簡単に処理の内容を説明します。
- 処理の継続をするかしないかを聞く
- 結果をanserという関数に代入する
- 最終的に変数anserの中にはvbYes(はいの場合)かvbNo(いいえの場合)入る
処理の内容をもとに「関数」「戻り値」「利用」を確認してみます。
図とともに確認してみましょう!
関数
図の①の部分です
関数は使用することで表示することができる関数や関数の中で計算した結果を戻り値にするものなどいろいろなものがあります。
MsgBox関数の場合は表示も結果を戻り値にすることもできます
戻り値
図の②の部分です
vbYesもしくはvbNoが戻り値として出力されます
利用
図の③の部分です
変数に代入することで利用することができます。
また、別の関数の引数にそのまま利用することも可能です。
上記の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
サンプルプログラムでは戻り値を利用しているのでかっこが必要になります。
そして戻り値を変数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関数で得られた戻り値をMsgBox関数に利用します。しかし、MsgBox関数の戻り値は使用しないのでMsgBox関数の引数にはかっこがついていません。
まとめ
いかがだったでしょうか?
本記事ではExcelマクロ(VBA)の変数使用時にかっこが必要な場合と不要な場合の確認をしました。
関数は自分で作成した関数でもVBA既定の関数でも同じです。
本記事の内容を学びかっこが必要かそうでないかを判断することで効率の良いVBA作成につなげてみてください!
では次回の記事でお会いしましょう!
ディスカッション
コメント一覧
まだ、コメントがありません