第8講 結果を報告する社員
第1話 結果を報告する社員とは?
第7講で学んだ社員は仕事をした後、
仕事を依頼した人に結果を報告しませんでした。
それに対して、今話で学ぶFunctionプロシージャは結果を仕事を依頼した人に返す社員です。
情報を収集分析して結果を依頼人に報告する社員です。
実際のマクロ例を見てから、内容を説明しましょう。
シート
プログラムの文章
Private Sub CommandButton1_Click()
Cells(6, 1) = "1と2の和は"
Cells(6, 2) = wa
End Sub
Private Sub CommandButton2_Click()
Rows("6:300").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
Function wa()
wa = 1 + 2
End Function
実行結果
Function wa()
wa = 1 + 2
End Function
が結果を報告する社員すなわちFunctionプロシージャです。
値を返すときは、C言語やJavaでは return(1+2) ですが、
VBAやVBでは
Function wa()
wa = 1 + 2
End Function
のようにFunctionプロシージャ名と同じ名前に代入します。
こうお思いになりませんでしたか。
別にSubプロシージャと変わらないのでは、と。
でも明確に違っています。
前のときは、シートに書き込んだのは仕事を依頼された人=Subプロシージャです。
それに対して今回は、Functionプロシージャからの報告を受けて、
仕事を依頼した人CommandButton1_Clickがエクセルシートに書き込んでいます。
Functionプロシージャのつくり方はSubプロシージャのときと同じで、
CommandButton1_Clickなどのプロシージャの外側で、
Function wa()
と打ってエンターすればよいのです。
では皆さん、第7講の最後に作ったマクロ
Private Sub CommandButton1_Click()
Dim a As Integer, b As Integer, c As Integer
a = Cells(6, 2)
b = Cells(7, 2)
c = Cells(8, 2)
Call wa(a, b, c)
End Sub
Private Sub CommandButton2_Click()
Range("B6:B9").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
Sub wa(x As Integer, y As Integer, z As Integer)
Cells(9, 2) = x + y + z
End Sub
→→(実行ボタン)
をFunctionプロシージャで書き換えてみましょう。
尚、引数はFunctionプロシージャにおいてもSubプロシージャと同様に使えます。
また、=の後にFunctionプロシージャを呼び出すときは、
Subプロシージャとは違って引数があってもCallは要りません。
逆に、Callを入れて
Cells(9, 2) = Call wa(a, b, c)
とするとエラーします。
第7講第12話へ 第2話へ
vc++講義へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る