【Excel VBA】摂氏を華氏に変換するユーザー定義関数(UDF)の作り方

Excelには多くの便利な組み込み関数がありますが、VBAを使えば、特定の計算や処理を行う自分だけのオリジナル関数(ユーザー定義関数 / UDF)を作成できます。

作成した関数は、SUMVLOOKUPと同じように、ワークシートのセルから直接=関数名()の形で呼び出すことが可能になります。

この記事では、簡単な例として「摂氏(Celsius)の温度を華氏(Fahrenheit)に変換する」ユーザー定義関数の作り方と、その使い方を解説します。


目次

ユーザー定義関数(Function)の完成コード

以下のコードを、Excel VBAの標準モジュールに記述します。

' 摂氏の温度を華氏に変換するユーザー定義関数
Function ConvertCelsiusToFahrenheit(celsiusValue As Double) As Double

    ' 摂氏から華氏への変換式: (摂氏 × 9 / 5) + 32
    ConvertCelsiusToFahrenheit = (celsiusValue * 9 / 5) + 32

End Function


' --- 作成した関数をVBA内で呼び出すサンプル ---
Sub TestConversionFunction()
    
    Dim celsiusInput As Double
    Dim fahrenheitResult As Double
    
    celsiusInput = 25 ' 例として摂氏25度
    
    ' 作成した ConvertCelsiusToFahrenheit 関数を呼び出す
    fahrenheitResult = ConvertCelsiusToFahrenheit(celsiusInput)
    
    MsgBox "摂氏 " & celsiusInput & "度 は、華氏 " & fahrenheitResult & "度です。"
    
End Sub

コードのポイント解説

Functionプロシージャの構造

Function 関数名(引数1 As 型, ...) As 戻り値の型
    ' ...計算処理...
    関数名 = 計算結果
End Function

ユーザー定義関数は、Subの代わりにFunctionで始まり、End Functionで終わります。

  • (celsiusValue As Double): この関数が受け取る「引数」です。ここでは、摂氏の温度を数値(Double型)で受け取ります。
  • As Double: この関数が返す値(戻り値)のデータ型を指定します。
  • ConvertCelsiusToFahrenheit = ...: Functionプロシージャ内で、関数名自身に値を代入することで、その値が関数の戻り値となります。これがSubプロシージャとの最大の違いです。

作成した関数の使い方

ユーザー定義関数には、大きく分けて2つの使い方があります。

1. ワークシートのセルで直接使う

標準モジュールに関数を作成すると、そのブックのワークシート上で、組み込み関数と同じように利用できるようになります。

例えば、A1セルに摂氏の温度が入力されている場合、B1セルに以下の数式を入力すると、華氏の温度に変換された結果が表示されます。

=ConvertCelsiusToFahrenheit(A1)

2. 他のVBAマクロ(Sub)から呼び出して使う

TestConversionFunctionのサンプルのように、他のSubプロシージャから通常の関数として呼び出すこともできます。これにより、複雑なマクロの中で、特定の計算処理を部品として再利用することができ、コードが整理されて見やすくなります。


まとめ

  • VBAで自分だけのオリジナル関数を作るには、Functionプロシージャを使用する。
  • Functionプロシージャは値を返すことができ、その戻り値は関数名自身に値を代入することで設定する。
  • 作成したユーザー定義関数は、ワークシートの数式として、また他のVBAマクロからの両方で利用できる。

何度も行う定型的な計算などがあれば、それをユーザー定義関数として作成しておくことで、Excelの利便性をさらに高めることができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次