【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プロシージャは

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

に有用です。

例えば

資料請求番号:SH43 TS41Runge-Kutta法を使った振動計算常微分方程式を使うと、様々な自然現象を記述することができます。その常微分方程式の数値解法としてルンゲクッタ(Runge-kutta)法があります。※Runge-kutta法の詳しい解説はこちら今回は、振動運動の運動方程...
振動の運動方程式をエクセルVBAを使って解く - らい・ぶらり
にあるような少し長い式を記述したり、ルンゲクッタ法を使うために何度も同じ式の計算を行う時に有用です。

 

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

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

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

shimakei8364

Recent Posts

  • PC/プログラミング

ブログ飯について ~ブロガーは稼げるのか?~

資料請求番号:PH ブログで収入を得るこ…

3年 ago
  • 写真/旅行

花の撮り方(可愛く撮る5つのコツを紹介)

資料請求番号:PH15 花を撮るためのレ…

4年 ago
  • English ver.

【Windows10】How to change file extension?

Display the file ext…

5年 ago
  • 写真/旅行

【観光 買い物】おすすめの秋葉原電気街の歩き方マップ

資料請求番号:PH83 秋葉原迷子卒業!…

5年 ago
  • 化学/物理

【どうやってはかる?】富士山の体積の計算方法

資料請求番号:TS31 富士山の体積をは…

5年 ago
  • 化学/物理

数学を使った美しい曲線のグラフィック

資料請求番号:TS11 エクセルを使って…

5年 ago