今回のFunctionプロシージャの定義です。
便宜上省略可能な戻り値のデータ型は省略して説明します。
Function プロシージャ名(ByVal 引数名1 As データ型, ByVal 引数名2 As データ型, ・・・) As 戻り値のデータ型 プロシージャ名 = 戻り値 End Function
プロシージャのもう一つの種類、Functionプロシージャを見ていきます。
Subプロシージャとの最大の違いは、呼び出されたときに「戻り値」を返す点です。
前回の呼び出されたSubプロシージャは、「戻り値」を返しませんでした。
SayHiを書き換えます。
Sub を function に書き換えします。
Function SayHi(ByVal name As Variant)
Function SayHi(ByVal name As Variant) Debug.Print "ご無沙汰です、 " & name End Function
すると、自動的にEnd SubがEnd Functionに変わります。
Functionプロシージャが返す「戻り値」をFunctionプロシージャ名と同じSayHiに代入します。
Function SayHi(ByVal name As Variant) SayHi = "ご無沙汰です、 " & name End Function
次に、Sub CallTest側でFunction SayHiから帰ってきた「戻り値」をDebug.Printします。
Debug.Print SayHi(name)
Sub CallTest() Dim names As Variant names = Array("西郷", "勝", "一橋") Dim name As Variant For Each name In names Debug.Print SayHi(name) Next name End Sub Function SayHi(ByVal name As Variant) SayHi = "ご無沙汰です、 " & name End Function
問題:Sub 試験・Function 加算・Sub 表示が理解できますか?
Sub 試験() Dim 答え As Integer 答え = 加算(20, 30) 表示 (答え) End Sub Function 加算(ByVal a As Integer, b As Integer) 加算 = a + b End Function Sub 表示(ByVal 答え As Integer) Cells(1, 1).Value = 答え End Sub
解答
まず、functionプロシージャ 「加算」を作成します。
Function 加算(ByVal a As Integer, b As Integer) 加算 = a + b End Function
「加算」では二つの引数a,bを「値渡し」で受け取り、「a+b」の計算をして「戻り値」を「戻し」ます。
Sub プロシージャ 試験 では、Functionプロシージャ 「加算」 を呼び出し引数20と30を渡します。
帰ってきた値を変数 「答え」 に代入します。
Debug.Printで「答え」をイミディエイトウィンドウに表示します。
シートのA1セルに「加算」の計算結果を表示するには
Subプロシージャ「表示」を作成します。
Sub 「試験」のDebug.Printをコメントアウトし、
Sub 「表示」を呼び出します。
その際「答え」を引数として与えるので
表示(答え)と入力してください。()を忘れない事。
コメント