【EXCEL VBA | 基礎コード】Functionプロシージャを使ったユーザー定義関数を作る!

スポンサーリンク

Functionプロシージャを使ったユーザー定義関数を作る!

EXCEL VBAの基本コードを紹介しています。初心者の方が順番に読んでくだけでVBAの基礎コードが理解出来るようになればなと思って、短めの記事で進めて行きたいと思います!

今回は、"Functionプロシージャを使ってユーザー定義関数を作る方法"について紹介します!

ユーザー定義関数

前回、Functionプロシージャについて説明した記事を書きました。Functionプロシージャの使い方を理解することによって、ワークシート上で使える「ユーザー定義関数」を作成することが出来ます。

ワークシート上の関数では、SUMやAVERAGEなどが有名ですが、これはExcelがもともと用意しておいてくれている組み込みの関数になります。

この関数ですが、Functionプロシージャを使うことで自作出来てしまいます!その自作した関数のことを「ユーザー定義関数」と言います。

Functionプロシージャについての記事はこちらです。

【EXCEL VBA | 基礎コード】SubプロシージャとFunctionプロシージャ
SubプロシージャとFunctionプロシージャ 今回は、"SubプロシージャとFunctionプロシージャ"について紹介します! VBAプロジェクト まずは、本題に進む前に「続きを読む
">
【EXCEL VBA | 基礎コード】SubプロシージャとFunctionプロシージャ
SubプロシージャとFunctionプロシージャ 今回は、"SubプロシージャとFunctionプロシージャ"について紹介します! VBAプロジェクト まずは、本題に進む前に「続きを読む

作り方

では早速作り方です。

  1. VBEを立ち上げる
  2. 標準モジュールにFunctionプロシージャを記述する
  3. ワークシートで関数と同じように使う

非常に簡単です、

1.VBEを立ち上げる

これは、ここまで何回もやっているので問題ないかと思いますが、念の為です。

EXCELファイルを開いて、「Alt + F11」のショートカットキーでVBEを開くことが出来ます。

こちらの記事も参考にしてください。

問題ないですね。

2.標準モジュールに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プロシージャはこちらで説明していますので参考にしてください。

https://hirachin.com/post-3292/

3.ワークシートで関数と同じように使う

最後に、ワークシートでの使い方です。

この時点でVBEは閉じちゃっても大丈夫です。Excelシートに戻ってください。

A列に適当に数字を入れています。

B列に、先程作った関数を使って計算してみましょう。

使い方は、SUMやAVERAGEと同じです、

=Functionプロシージャ名(引数)

Functionプロシージャ名は、要するに関数名です。今回で言うと「kakeru100」と名前を付けているのと、引数はセル範囲としているので、B1セルに次のように入力してください。

=kakeru100(A1)

これだけです。

実際にやってみると、「=kak」など途中まで入れると、候補で「kakeru100」が出てくると思います。

B1セルに入れた後は、通常の数式のコピペのように、5行目(B5セル)までコピーペーストすれば、全て100倍された数字が入ります。

実際にやってみます。

実行後画面

まとめ

ユーザー定義関数の作り方を紹介しました。今回は、数値を100倍するだけの簡単なユーザー定義関数を作りましたが、この方法を使うことで、通常の関数では実現できない処理をワークシート上でも行うことができるようになります!せっかくVBAを勉強するならワークシートにも活かしていきましょう!