Functionプロシージャを使ったユーザー定義関数を作る!
EXCEL VBAの基本コードを紹介しています。初心者の方が順番に読んでくだけでVBAの基礎コードが理解出来るようになればなと思って、短めの記事で進めて行きたいと思います!
今回は、”Functionプロシージャを使ってユーザー定義関数を作る方法”について紹介します!
ユーザー定義関数
前回、Functionプロシージャについて説明した記事を書きました。Functionプロシージャの使い方を理解することによって、ワークシート上で使える「ユーザー定義関数」を作成することが出来ます。
ワークシート上の関数では、SUMやAVERAGEなどが有名ですが、これはExcelがもともと用意しておいてくれている組み込みの関数になります。
この関数ですが、Functionプロシージャを使うことで自作出来てしまいます!その自作した関数のことを「ユーザー定義関数」と言います。
Functionプロシージャについての記事はこちらです。
作り方
では早速作り方です。
- VBEを立ち上げる
- 標準モジュールにFunctionプロシージャを記述する
- ワークシートで関数と同じように使う
非常に簡単です、
VBEを立ち上げる
これは、ここまで何回もやっているので問題ないかと思いますが、念の為です。
EXCELファイルを開いて、「Alt + F11」のショートカットキーでVBEを開くことが出来ます。
こちらの記事も参考にしてください。
問題ないですね。
標準モジュールにFunctionプロシージャを記述する
VBAのプログラムを書くときには、「モジュール」という場所に書きます。種類が色々あるのですが、それは追々ということで、一旦普通の「標準モジュール」というところに書いていきましょう。
「標準モジュール」はどこにあるかと言うと「作ります」
次の図のように、VBEの「挿入」メニューから「標準モジュール」を選択して下さい。
選択すると左側のボックス内に標準モジュール「Module1」というのが表示されたと思います。右側のボックスに何か入力出来そうな感じに変わります。
※図は、右側のボックスは黒画面ですが、通常は白です。
この右側の画面が、標準モジュールの「Module1」になります。ここにFunctionプロシージャを書きます。
今回は次のような、Functionプロシージャを書いてみます。
Function kakeru100(rng As Range) As Long
Dim ans As Long
ans = rng.Value * 100
kakeru100 = ans
End Function
プロシージャ名は、kakeru100、引数にセルの範囲(Range)、返り値のデータ型はLong型、処理の中身は、指定されたセルの値を100倍にして返すだけの簡単なものです。※セルの範囲は1つのセルだけ、入っている値は数値型とします。
Functionプロシージャはこちらで説明していますので参考にしてください。
ワークシートで関数と同じように使う
最後に、ワークシートでの使い方です。
この時点でVBEは閉じちゃっても大丈夫です。Excelシートに戻ってください。
A列に適当に数字を入れています。
B列に、先程作った関数を使って計算してみましょう。
使い方は、SUMやAVERAGEと同じです、
Functionプロシージャ名は、要するに関数名です。今回で言うと「kakeru100」と名前を付けているのと、引数はセル範囲としているので、B1セルに次のように入力してください。
=kakeru100(A1)
これだけです。
実際にやってみると、「=kak」など途中まで入れると、候補で「kakeru100」が出てくると思います。
B1セルに入れた後は、通常の数式のコピペのように、5行目(B5セル)までコピーペーストすれば、全て100倍された数字が入ります。
実際にやってみます。
実行後画面
まとめ
ユーザー定義関数の作り方を紹介しました。今回は、数値を100倍するだけの簡単なユーザー定義関数を作りましたが、この方法を使うことで、通常の関数では実現できない処理をワークシート上でも行うことができるようになります!せっかくVBAを勉強するならワークシートにも活かしていきましょう!
コメント