トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 新たなる挑戦編: 第11話「取り込み処理の完成」3/4 :今日からおまえはレベル3だ

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第11話 「取り込み処理の完成」

今日からおまえはレベル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分ほどでブラッシュアップしてしまいました。

一覧にもどる