VBA38_自分だけの関数を作ろう

おはようございます! Benです。今日はVBAで自前の関数を使う方法です。

20160412a.gif
これはエクセルで既定の合計を求めるSUM関数を使ってるものです。これを素直にVBAで書くと…

Sub 合計()
  Range("A9").Formula = "=Sum(A1:A8)"
End Sub
このようにとてもシンプルになります。要はA9セルの数式として=SUM…を入力しますよ、というコードです。これは普通にエクセルに既存である関数を利用したものです。よく使う関数としては、今回使ったSUM(合計)AVERAGE(平均)MAX(最大)MIN(最小)COUNT(値個数)などがあります。

20160412b.gif
ではご覧の課題のように、既定の関数にはない計算をさせるときはどうするのでしょう。そういうときは、自分で関数を作りましょう!

Sub 計算()
  MsgBox 円の面積(5)
End Sub

Function 円の面積(半径 As Single)
  円の面積 = 半径 ^ 2 * 3.14
End Function
色々と省略していますがご覧のとおりです。直接実行する計算というSubプロシージャと円の面積という自分で作った関数(Functionプロシージャ)があります。ちなみに関数名などはご覧のように日本語でもOKです。計算プロシージャを実行すると、実際の作業は2行目だけ。これは「引数として5を渡す円の面積という関数の戻り値をメッセージボックスに表示しなさい」というものです。これにより下のほうの円の面積Functionが呼び出され、半径という変数に引き渡された5が代入されます。今回は引数が1個ですが、2個以上あるときは、呼び出す元の引数と呼び出される関数の引数は同じ順番です。6行目で自分自身(円の面積関数)は半径(5)の2乗×円周率(3.14)の計算をしています。この自分自身の代入値が戻り値になって2行目に戻ってメッセージボックスに表示されます。

20160412c.gif
実行させると、ご覧のような結果になります。これだけでしたら、わざわざFunctionを使って関数化する必要はありませんが、計算がより複雑だったり、何回も使うときはFunctionプロシージャは役に立ちます。次回はもうちょっと複雑なものをノートします。

この記事へのコメント


この記事へのトラックバック