資料請求番号: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
このように記述することによって「このプログラムでは、何の式を解いているか?」を直感で分かるようにするのにも有用です。
コメントを残す