VBAのFunctionプロシージャを「y=2x+1」を使って解説する
はじめに
Excel VBAではじめて「Functionプロシージャ」に出会ったとき、どう思いましたか?わたしは、まったく意味がわかりませんでした。
「自分で関数を作れる」ということがどういうことなのか、「引数」と「戻り値」のことも、解説を読んでも理解しにくかったです。
最近は少し慣れて自分で関数を作れるようになりました。 ふと、「Functionプロシージャを一次関数で表したらわかりやすくなるのではないか」と思い、試してみることにしました。
◆目次◆
一次関数とは
「コトバンク」の一次関数の解説から抜粋します。 https://kotobank.jp/word/%E4%B8%80%E6%AC%A1%E9%96%A2%E6%95%B0-433347
a、bを定数とするときy=ax+b(a≠0)で表される関数をいう。
この記事のタイトルの一部の「y=2x+1」は一次関数です。
Functionプロシージャとは
引数と戻り値を使って、自分で関数を作ることができるプロシージャです。 (戻り値がないプロシージャも作成可能です) Subプロシージャとの違いは、戻り値の有無です。
引数と戻り値とは何なのか、一言でいうと以下のとおりです。
引数
関数に代入する値戻り値
関数の処理結果
なお、Functionプロシージャは以下のように記述します。
Function 自分で決めた関数名(引数名 As データ型) As 戻り値のデータ型 自分で決めた関数名 = 戻り値 End Function
ここまでは、(Functionプロシージャをはじめて目にした人は)「引数」や「戻り値」など、聞き慣れない言葉が出てくるので、自分で関数を作るイメージがしにくいです。
では、例として一次関数の「y=2x+1」という数式を使ってFunctionプロシージャで関数を作る過程を説明します。
「y=2x+1」を例にしてFunctionプロシージャで関数を作る
yの値を求める関数(Functionプロシージャ、関数名:y)を作ります。
Function y(x As Long) As Long y = 2 * x + 1 End Function
なんとなくわかりやすくなりませんか。 yを求める関数は「y=2*x+1」と書けばいいのです。
この場合、引数と戻り値は以下のとおりです。
- 引数:x
- 戻り値 :2 * x + 1の答え(処理結果)→つまりyの値
では、引数:xに代入する値を決めます。
今回はx=3とします。
呼び出し用のsubプロシージャを用意して引数xに3を代入します。
Sub 一次関数呼び出し用プロシージャ() Debug.Print y (3) End Sub
上記の呼び出し用のSubプロシージャでは、yの値(y=2x+1のときにxの値が3だった場合の処理結果)がイミディエイトウィンドウに出力されます。
これで、Functionプロシージャの関数:yと、関数呼び出し用のプロシージャが完成しました。
この2つを合わせます。
Sub 一次関数呼び出し用プロシージャ() Debug.Print y (3) ' 出力結果:7 End Sub Function y(x As Long) As Long y = 2 * x + 1 End Function
Functionプロシージャを使った関数作り方や、「引数」と「戻り値」の意味がわかりやすくなったのではないでしょうか。
ちなみに上記の場合、引数と戻り値は以下のとおりです。
- 引数:x=3
- 戻り値:y=2×3+1=7
さいごに
Functionプロシージャで関数を作るときに「どうやって組み立てたらいいのか」がわからなくなったら、一次関数を思い出してください。
「引数はx、戻り値はyの値(処理結果)」と考えていただくと、少しわかりやすくなるかもしれません。