今日からおまえはレベル3だ
「どうだい!ちゃんと動いてるだろう?」
「………驚いた、星。
おまえ、本当にVBAのスキルが向上したな…。
今日から、おまえはレベル3だ。
………変数やステートメントの解説をしてたころが懐かしいよ。
俺は、本当にうれしい」
八木くんは遠い目をして、少し涙ぐんでいます。
「でもそれはそれ、これはこれだ!
このコードにはいくつか問題点があるぞ。
早速、ブラッシュアップしていくか!!」
星くんは、"やっぱりな"という顔をして頭をポリポリとかきました。
「製品番号を探す処理と、日付を探す処理、どちらもループが必要なため、
ネストにネストを重ねて処理全体がすごくわかりにくい。
これらの処理は、おそらく他のプロシージャでも必要になってくる処理なんじゃないのかい?」
「…確かに、製品番号を探す、日付を探すは、他の処理でも頻繁に使いそうだな」
「なら、この部分はFunctionプロシージャにして外だししよう!
そのほうがメインの処理がすっきりするよ。
あと、"For i = 1 To 10"のところ、これって内示1~10だから終了値を10にしてるけど、
今後、増えたり減ったりする可能性もあるんだろ?ここはUBound関数を使用するといいよ」
「UBound関数?」
「UBound(配列)とすると配列のインデックス番号の最大値を返すんだ。
逆にLBound(配列)とすると最小値を返す。
変数vのインデックス番号は0~10だから、"For i = 1 To UBound(v)"としても処理の結果は同じになる。
そして将来、内示の項目数が11や12に増えたり、逆に減ったりしても、コードを修正する必要がないよ」
「フーーーン、便利な関数だね」
「…ちょっと待ってろ…。
今ブラッシュアップするから………よし!できた!」
八木くんは、ほんの5分ほどでブラッシュアップしてしまいました。