戻り値は何が返る?
「ちなみに星、もしこのとき製品番号や日付が見つからなかったとき、どうなると思う?」
むむむ…。星くんは答えに詰まり、ブラッシュアップしたコードをのぞきこみました。
しばらく画面を見つめていましたが、やがてあきらめてフーッと息を吐き出しました。
「…だめだ、わからないや。数値の0でも返るのかい?」
「!!………正解だ。
でも、今のはカンで答えたんだろう?
どうして0が返るのか、ちゃんと説明できないとダメだよ」
Function 製品行取得(ByVal 製品 As String) As Long
Function 日付列取得(ByVal 日付 As String) As Long
「製品行取得プロシージャも日付列取得プロシージャも、戻り値の型にLong型を指定している。
こうすると、変数でLong型を指定したときと同じように、戻り値の初期値は"0"になるんだ。
製品番号や日付が見つからなかったということは、一度も戻り値を取得できなかったということだから、
初期値である0が返るというわけさ」
「………な~~る!
じゃあ、呼び出し元のプロシージャにある"If r <> 0 Then"と、"If c <> 0 Then"は…」
「そう、0が返ってきたときに、0行や0列に対して処理を行わないようにしてるんだ。
ワークシートにそんな行や列はないからね」
「…じゃ、じゃあ、俺が最初に作ったコードは…??」
星くんが恐る恐るたずねます。
「それがなんと!うまくいってるんだなw。
…星、おまえが意識して作ったかどうかわからないが、おまえの作ったコードは結構フレキシブルで、
いいコードなんだぜ」
「えっ?フレキシブルなコード…ってなんだい?」 星くんが首をかしげます。