ExcelVBAでオリジナルの関数を自作して活用する方法

ExcelVBA-マクロ

Excelではもともと標準で使用できる関数以外に、オリジナルの関数を自作して自由に追加することができます。このような関数をユーザー定義関数または自作関数と呼びます。

Functionプロシージャで自作関数を定義する

Functionプロシージャは本来標準モジュールのSubプロシージャから呼び出して利用する部品のようなもの(サブルーチン)ですが、実は一度定義するとExcelシート上から他の関数と同様に数式に利用することができます。

自作関数を定義する方法

Function プロシージャ名(引数1 As データ型,Optional 引数2 As データ型 = 初期値) As データ型
 プロシージャ名 = 戻り値(処理結果)
End Function

Optionalは引数の入力を省略した場合の初期値を設定します。
初期値を設定した引数より後の引数は全て初期値を設定する必要があります。
例:第2引数に初期値を設定した場合は、第3引数以降にも必ずOptionalで初期値を設定する

例:オリジナルのTAX関数を定義してみる

以下の例では、税込み価格と税抜き価格を算出する自作関数「TAX」を定義しています。

TAX(金額,税率,[算出方式])
税率は%(百分率)で入力します。(10%なら10と入力)
算出方式 1:税込み価格 2:税抜き価格 省略した場合は1となります。

VBAコード

Option Explicit

Sub help_msg()
    Application.MacroOptions "TAX", "税込み又は税抜き価格を算出します。算出方式は1:税込み、2:税抜き、省略すると1になります"
End Sub

Function TAX(金額 As Long, 税率 As Long, Optional 算出方式 As Long = 1) As Long
    Select Case 算出方式
        Case 1
            TAX = Int(金額 * (1 + 税率 / 100))
        Case 2
            TAX = Int(金額 / (1 + 税率 / 100))
        Case Else
            MsgBox "算出方式は1:税込み価格、2:税抜き価格となります。"
            TAX = ""
    End Select
End Function

完成イメージ

最初にSubプロシージャを1回だけ実行してヘルプ(説明)を追加しています。

定義したTAX関数を実際に使ってみます。
B2セルに数式「=TAX(A2,10)」と入力すると、金額120円に対して10%を加算した税込み金額132円が表示されます。

B3セルに数式「=TAX(A3,8)」と入力すると、金額200円に対して8%を加算した税込み金額216円が表示されます。

今度は第3引数に「2」を指定して税抜き金額を表示します。
C4セルに数式「=TAX(A4,10,2)」と入力すると、10%の税込み金額132円に対する税抜き金額120円が表示されます。

引数に指定範囲外の数値や文字列を入力した場合はエラー表示します。(今回は数値型で宣言した変数に対して文字列””を代入しています)

自作した関数をアドインとして保存する

定義した自作関数をアドインとして指定フォルダに保存しExcelアドインに追加すると、どのブックからも利用できるようになります。

アドインの保存場所

別のPCでもアドインを保存して追加することで、自作した関数を共有することができます。

コメント

タイトルとURLをコピーしました