初歩的な質問ですがよろしくお願いします。
今、SubプロシージャとFunctionプロシージャについて
参考書で読んでいるのですが、
「値を返す、返さないの違い」とあるのですが、
一般的に「値を返す」とはどういうことなのでしょうか?
よろしくお願いします。
戻り値があるかどうかの違いです。(こんなのでいいのかなぁ…)
その関数で何か計算をして、
その答えを戻り値として返すのなら(Len("Str")の3のように)"値を返す"
そうでないなら(もしくは別の方法でしかなにも返さないのなら)"値を返さない"ものです。
Subでは値は返せません、…というと、みんなFunctionでもかまわないような気がするんですけど…^^;
まあ、アルファベットが長いので、Subのほうが書くのが早いのと(ぶしょう者^^;)
あとどこかで聞いたような気がしますけど、Functionばっかり使ってると、
コンパイルごのソフトが重くなるって…。
(Publicをむやみに使ってはいけないのは、ヘルプにも書いてありますけど)
さて、SubとFunctionですけど、あんまり気にする必要はないと思います。
(関数を作るときは、間違えると文法エラーだって教えてくれるし)
APIのコールバック関数などでは、さすがに重要ですけど。
実際に下にあるソースを書いてみたので参考にどうぞ。
Function a(x)
x = x * 2
a = x 'ここで値を返している
End Function
' subでは値を返せない
Sub b()
x = 100
End Sub
'テストコード
Private Sub Form_Load()
'a 関数は値を返すので、メッセージボックスには2が戻る
MsgBox (a(1))
End Sub
なるほど、値を返すとは、
いろいろなとらえ方があるんですね。
たかみちえさん、MADIAさんありがとうございました。