トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 新たなる挑戦編: 第12話「フレキシブルなコードとは」1/4 :戻り値は何が返る?

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第12話 「フレキシブルなコードとは」

戻り値は何が返る?

「ちなみに星、もしこのとき製品番号や日付が見つからなかったとき、どうなると思う?」 むむむ…。星くんは答えに詰まり、ブラッシュアップしたコードをのぞきこみました。
しばらく画面を見つめていましたが、やがてあきらめてフーッと息を吐き出しました。

「…だめだ、わからないや。数値の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。
…星、おまえが意識して作ったかどうかわからないが、おまえの作ったコードは結構フレキシブルで、
いいコードなんだぜ」

「えっ?フレキシブルなコード…ってなんだい?」 星くんが首をかしげます。

一覧にもどる