【Excel マクロ VBA】Functionプロシージャの使い方を学んで関数を定義する

資料請求番号:SH45

VBAマクロで自分の関数を定義して自由に呼び出しできるようにする

VBAプログラミングを行っていると、何度も同じ式を記述して計算する場面が出てきます。
このとき、何度も同じ式を記述すると可読性が悪くなる(複雑な式であれば特に)ので、式の記述は1回で済ませたいという欲望が出てきます。
C言語にはfunction関数と呼ばれるものがあり、Main関数の外で関数を定義することができます。

今回はVBAで関数の定義はできるのか?できるとしたらどのように記述するか?が主なテーマです。

Functionプロシージャ

VBAにおける関数の定義には「Functionプロシージャ」を使用します。VBAでも関数の定義ができるのです。

Functionプロシージャを使用したプログラム例


上記のプログラムはFunctionプロシージャを使用して「4+3」を計算するプログラムです。

プログラム解説

このプログラムは予めB1セルとB2セルに値を入力して使用します。
Cells(1,2)はB1セル、Cells(2,2)はB2セルに相当します。

※参考 A1形式とCells表示の関係

①まず、ユーザーが入力した数値をx,yへ代入します。

②xの値をFunctionプロシージャで定義した「F1」と呼ばれる関数(関数名は任意)に引き渡します。(この時、xのことを引数と呼びます)

③yの値も同様にF1へ引き渡します

④F1内で「x+y」の演算を行います。演算結果はF1(x,y)と記述した行に戻ります。このとき、F1内で計算した結果を戻り値と言います。

⑤演算結果F1(x,y)をzへ代入し、Cells(4,2)すなわち、B4セルに表示させます。

以上が、Fuctionプロシージャを使用して関数の定義を行い、その関数を使って演算を行うプログラムの解説になります。

以上の流れをgifにまとめました。

Functionプロシージャの意義

Functionプロシージャは

①複雑な式を記述したいとき
②同じ式を何度も使用したいとき

に有用です。

例えば

にあるような少し長い式を記述したり、ルンゲクッタ法を使うために何度も同じ式の計算を行う時に有用です。

 

また、上記のページには以下のプログラムがありますが、

Function F1(ByVal t As Double, ByVal x As Double, ByVal v As Double) As Double
F1 = v
End Function

Function F2(ByVal t As Double, ByVal x As Double, ByVal v As Double) As Double
F2 = -omega0 ^ 2 * x – 2 * gamma * v + force * Cos(omega * t)
End Function

このように記述することによって「このプログラムでは、何の式を解いているか?」を直感で分かるようにするのにも有用です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です