VBScriptのsubとFunctionの動作の違い

VBScriptのsubとFunctionの動作の違い

VBScriptの sub と Function の動作の違い

ぶっちゃけ全てのプロシージャをFunctionで書いても問題ないのであまり気にしてなかったけど…。

最大の違いは【戻り値】が扱えるか

sub:戻り値を扱えない
Function:プロシージャ名 = 戻り値 で値を渡せる

デカいね、この違い。
だからFunctionでばかり書いてしまうわけだけど。

subプロシージャの使いどころ

IEブラウジングだったら処理完了まで一貫して行うパーツとか、親元に答えを返さなくていい時が使いどころ。
スクレイピングだったら、処理全体の纏りをSubで書いてその中の細かい処理をFunctionで値受け渡すとか。

Callを使った方が判り易さはあるけど、省略して書きたいものだから書かない事が多いですね。

Functionプロシージャの使いどころ

私の場合はsubはほぼ使わず全面Functionで書いてます。

戻り値があるものはFunctionで書く事必須ですが、それ以外は整理整頓しやすい自分流ルールでいいと思います。
「見返してわかりやすい」がプログラムには必要な条件ですから。

▼Subと同じ(戻り値の無い)使い方

▼戻り値のあるFunctionだけの使い方

※こう書くとメッセージボックスに fugafuga が表示される。

Functionで複数の戻り値を渡す

ここら辺はPHPとかと同じで、基本的に配列に入れて返します。

※こう書くと最初のメッセージボックスに fuga、2つ目に hega が表示される。

その他にも、カンマ区切りの文字列にして受け取り側で split(backData,”,”) という方法もあるけど…CSVに書き出さない限り有用な方法ではないと思います。

戻り値は1つの値として返さないといけない

他のプログラム言語と同じで理解しやすく助かります。

まとめ

書きながら強く思いましたが、やっぱり取り合えずFunctionで書いとけばOKじゃね?