VBAのFunctionで関数を定義し、値を返す方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Functionの概要

独自の関数を作成し、計算結果や値を返す VBAの予約語

Function

概要 Function ステートメントは、VBAで独自の関数を定義し、計算結果や処理結果を呼び出し元に返すために使用されます。
Functionは Sub とは異なり、戻り値を持つことができます。

わかりやすく説明 処理を実行し、その結果を返す関数を作る命令。

  • Functionは戻り値を持つことができる(Subは戻り値なし)。
  • 関数内で計算を行い、結果を呼び出し元に返せる。
  • Excelのワークシート関数(UDF:ユーザー定義関数)として利用可能。

Functionを使った基本的な関数

以下の例では、Function を使って 2 つの数値を足し算する関数を作成します。

Function AddNumbers(a As Double, b As Double) As Double
    AddNumbers = a + b
End Function

Sub TestFunction()
    MsgBox "合計: " & AddNumbers(10, 5)
End Sub

解説:

  • Function AddNumbers(a As Double, b As Double) As Double: 2つの数値を受け取り、その合計を返す関数。
  • AddNumbers = a + b: 戻り値として合計を設定。

FunctionをExcelのワークシート関数として使用

Function を作成すると、Excelのセル内で使用できるカスタム関数(UDF)を作成できます。

Function SquareNumber(n As Double) As Double
    SquareNumber = n * n
End Function

使い方:

  • Excelのセルで =SquareNumber(5) と入力すると 25 が返る。

Functionの戻り値を条件で変更

以下の例では、引数の値によって異なる結果を返します。

Function CheckNumber(n As Integer) As String
    If n > 0 Then
        CheckNumber = "正の数"
    ElseIf n < 0 Then
        CheckNumber = "負の数"
    Else
        CheckNumber = "ゼロ"
    End If
End Function

Sub TestCheckNumber()
    MsgBox CheckNumber(-5) ' 「負の数」と表示
End Sub

解説:

  • 0 より大きい → 「正の数」
  • 0 より小さい → 「負の数」
  • 0 の場合 → 「ゼロ」

Functionの引数をオプションにする

以下の例では、引数を省略可能(オプション)に設定しています。

Function GreetUser(Optional name As String = "ゲスト") As String
    GreetUser = "こんにちは, " & name & " さん!"
End Function

Sub TestGreetUser()
    MsgBox GreetUser() ' 「こんにちは, ゲスト さん!」と表示
    MsgBox GreetUser("田中") ' 「こんにちは, 田中 さん!」と表示
End Sub

解説:

  • Optional name As String = "ゲスト" により、引数を省略可能に設定。
  • 引数が指定されなかった場合、「ゲスト」がデフォルト値として使用される。

Excel VBAでのFunctionの活用

以下の例では、セルの範囲内の数値の合計を取得する関数を作成します。

Function SumRange(rng As Range) As Double
    Dim cell As Range
    Dim total As Double
    total = 0

    For Each cell In rng
        If IsNumeric(cell.Value) Then
            total = total + cell.Value
        End If
    Next cell

    SumRange = total
End Function

使い方:

  • Excelのセルで =SumRange(A1:A10) と入力すると、その範囲の合計を計算。

Functionの注意事項

  • Function は必ず値を返す: Sub との違いを理解する。
  • 戻り値の型に注意: 期待しない型が返らないよう、適切に指定する。
  • ワークシート関数として利用可能: Excelのセルで UDF(ユーザー定義関数)として使える。

よくある質問

Q: Function と Sub の違いは?
A: Function は戻り値を持つが、Sub は値を返さない。
Q: Function 内で MsgBox を使ってもよいですか?
A: 可能だが、ワークシート関数として使う場合は避けたほうがよい。
Q: Function の戻り値を複数にできますか?
A: 戻り値は 1 つですが、配列やオブジェクトを返すことで複数の値を持たせることが可能です。

まとめ

  • Function ステートメントは値を返す関数を作成するために使用。
  • 引数を受け取り、処理を行い、その結果を返すことができる。
  • Excelのユーザー定義関数(UDF)として利用可能。
  • 戻り値の型を適切に指定し、条件分岐やループ処理を組み合わせると便利。