第8講 結果を報告する社員

第1話 結果を報告する社員とは?

第7講で学んだ社員は仕事をした後、
仕事を依頼した人に結果を報告しませんでした。
それに対して、今話で学ぶFunctionプロシージャは結果を仕事を依頼した人に返す社員です。
情報を収集分析して結果を依頼人に報告する社員です。
実際のマクロ例を見てから、内容を説明しましょう。
シート
vba
プログラムの文章
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
vba入門→(実行ボタン)visual basic

を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 入門 基礎から応用まで
数学研究室に戻る