Functionプロシージャ

プロシージャには Sub プロシージャだけではなく Function と言うプロシージャが用意されています。 Function プロシージャの大きな特徴は呼び出し元に値を戻す事ができることです。その為、あたかも関数のように動作しますのでユーザー定義関数とも言います。ここでは Excel VBA で Function プロシージャの使い方について解説します。

(Last modified: )

Functionプロシージャの使い方

まず Function プロシージャの定義を見ておきます。

Function プロシージャ名(引数 As データ型) As 戻り値のデータ型
    プロシージャ名 = 戻り値
End Function

プロシージャ内で様々な処理を行った後で、プロシージャ名に値を格納することで呼び出し元に値を返す事ができます。この返される値を戻り値と言います。例えばInteger型の引数を1つ受け取り、戻り値としてString型の値を返すようなプロシージャは次のようになります。

Function hantei(ByVal tokuten As Integer) As String
    Dim kekka As String

    If tokuten >= 80 Then
        kekka = "合格"
    Else
        kekka = "不合格"
    End If

    hantei = kekka
End Function

次に呼び出し元の方です。Functionプロシージャを呼び出すと同時に、呼び出したFunctionプロシージャから戻ってくる値を受け取るように記述しなければなりません。

Sub テスト()
    Dim kekka As String

    kekka = hantei(75)
End Sub

上記の場合、「hantei」プロシージャを呼び出すと、「hantei」プロシージャ内で処理が行われた結果、値が戻ってきます。その戻ってきた値が変数「kekka」に格納されるわけです。

このようにFuctionプロシージャを使うことで、自分で関数を定義するように何か処理を行った結果を返す事ができるプロシージャを定義することが出来ます。

サンプルプログラム

では簡単なサンプルで試してみます。

Sub テスト()
    Dim kekka As String

    kekka = hantei(75)
    Range("A1").Value = kekka
    
    kekka = hantei(92)
    Range("A2").Value = kekka
    
End Sub

Function hantei(ByVal tokuten As Integer) As String

    Dim kekka As String

    If tokuten >= 80 Then
        kekka = "合格"
    Else
        kekka = "不合格"
    End If

    hantei = kekka

End Function

上記のマクロを実行すると次のようになります。

Functionプロシージャ

-- --

Excel VBA で Function プロシージャの使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。