以下のコードは別のプロシージャを呼び出すマクロである。
空欄に入る適切な語句を選択肢の中から解答しなさい。
【 ① 】 Exam()
MsgBox "OK"
End 【 ① 】
【 ② 】Numbers(a As Integer, b As Integer) As Integer
Numbers = a + b
End 【 ② 】
Sub Test()
Call Exam
Dim result As Integer
result = Numbers(3, 7)
MsgBox "3 + 7 の結果は " & result
End Sub
1.【 ① 】Sub 【 ② 】Function
2.【 ① 】Function 【 ② 】Sub
3.【 ① 】Sub 【 ② 】Sub
4.【 ① 】Function 【 ② 】Function
正解
1
解説
【1章 プロシージャ】
●Subプロシージャ: 処理を行うが値を返さないプロシージャです。
●Functionプロシージャ: 処理の結果を値として返すプロシージャです。
処理の内容を見ると
・MsgBox "OK"は単にメッセージを表示しているだけですので値は返してはいませんので、Subプロシージャです。
・Numbers = a + bは変数aと変数bを合算し左辺に代入して「numbers」関数で値を返していますのでFunctionプロシージャです。
【コード解説】
Sub Exam()
MsgBox "OK"
'メッセージを表示する。
End Sub
Function Numbers(a As Integer, b As Integer) As Integer
’計算や処理を行い、その結果として値を返します。Numbers関数は2つの引数 aとb を受け取って値を返します。
Numbers = a + b
'右辺の計算結果を左辺の変数に代入する。
End Function
Sub Test()
Call Exam
'Examプロシージャを呼びだす。
Dim result As Integer
result = Numbers(3, 7)
'result = Numbers(3, 7)のように呼び出し、 Functionプロシージャの結果を受け取り処理に利用できます。
MsgBox "3 + 7 の結果は " & result
'処理の結果をメッセージで表示する。
End Sub