- Home ›
- Excel VBA入門 ›
- プロシージャ ›
- HERE
Functionプロシージャ
プロシージャにはSubプロシージャだけではなく、Functionと言うプロシージャが用意されています。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
上記のマクロを実行すると次のようになります。
( Written by Tatsuo Ikura )