【Excel VBA】VBAのFunctionでオリジナル関数を作ろう

エクセルには標準の関数以外にオリジナルの関数を自分の計算式を加えて処理結果を返すことができます。 このオリジナル関数のことをFunctionプロシージャと言い、使いこなせるとエクセルは以前よりぐっと便利になりますので紹介したいと思います。

Functionプロシージャとは何か

FunctionプロシージャとはVBAでオリジナルの関数を自分の計算式を加えて処理内容を定義できる関数となります。関数は処理の集合体だと思ってください。なおプリセットされている標準関数はワークシート関数と呼ばれFunctionプロシージャと同じように呼び出して利用が可能です。
Functionプロシージャで処理した結果は戻り値として変数やオブジェクトを返すことができます。

FunctionとSubの違いについて

SubプロシージャはFunctionプロシージャと同じく関数になります。違いは値を返さない、Functionプロシージャは値を返すというところがあり、それぞれ使い分けを行います。 メイン処理をSubプロシージャ内で定義し、共通の処理となるところをFunctionプロシージャで外出しし共通部品としてメイン処理の中でCall関数で呼び出し、処理結果を得るという使い方が主となります。
なお、Subプロシージャはマクロとして登録され、マクロから実行が可能になります。

どんなケースで使うか

今回はサクッとカンタンに利用するということで、Functionプロシージャをエクセルのセルから呼び出す方法を取り上げてみたいと思います。 例えばSUM関数はよく使うと思いますが、この標準の計算以外にオリジナルの計算式を加え利用するといったことが可能になります。

実際にサンプルでみてみましょう

サンプルとしてセルの値に50を加算した結果が返る関数を用意しました。

Function ADDNUM(rCell As Range) As String
  ADDNUM = rCell.Value + 50
End Function

設定方法です。
①適当な数値をA列に入力します。

②[Alt] + [F11]を押下してVBAのコンソールを開きます。

③標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

④右ペインのウインドウに上記の関数を入力します。

⑤エクセルのシートに戻り、追加した関数「=ADDNUM(A1)」をB2のセルへ挿入します。
また入力した数値の範囲までドラッグし関数をコピーしてください。

はい!できましたね!
A列の数値に50が加算された結果が隣のB列に表示されたことが確認できました!

FUnctionプロシージャは複雑な処理を一つにしたもので、戻り値があり、共通部品としてあらゆるところで再利用が可能な関数です。
使いこなせると便利ですので、今後いろいろな利用方法を紹介していきたいと思います。

コメントを残す

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