トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > VBAとの出会い編 第7話「星くん、VBAプログラミングに挑戦する!」

やってみよう!Excel VBAで業務改善!|VBAとの出会い編

細かいところを見ていこう

「よし。それじゃあ早速、コードの細かいところを見ていこう。まずFor…Nextステートメント、
"i = 最初の行から"の最初の行には、何が入るんだい?」
「…えっと、1行目の1かな…?」 「ちがうよ、星。1行目は、項目名が記述されている行だろう?
データが入力されているのは2行目だから、ここには2が入るよ」
「…あ!そっか。1行目は処理しなくてもいいんだね」

「じゃあ次の、"最後の行まで"。ここには何が入る?」 「それは………そうだ、データの入力されている最後の行番号をいれればいいんだね?」 「そのとおり。仮にデータの入力されている最後の行が20000行なら、ここに20000を入力するんだ。
じゃあ、次。"A列のセルのフォント色が赤だったら"の条件には、何を記述すればいい?」
「………」

星くんは、黙り込んでしまいました。

「…だめだ、想像もつかないよ。何を記述すればいいんだい?」 「うん、ここはわからなくて当然だ。これは、あとでイイ方法を教えるよ。 じゃあ、最後の"B列のセルに1を代入"、ここには何を記述すればいい?」 「…うーん。ただのB2のセルやB3のセルに1を代入するだけなら、
教えてもらった"Range("B2") = 1"や"Range("B3") = 1"でいいんだけどなあ…」

星くんが、腕を組んでくやしがります。

「いい線いってるじゃないか、星。ほぼ、それで正解だよ。
あとはFor…Nextステートメントのカウンタ変数に注目するんだ。カウンタ変数は2、3、4…と1づつ増分する。
だからRangeオブジェクトの記述を"Range("B" & i) = 1"という具合に、カウンタ変数を行番号に利用すればいいんだよ」
「ええっ!?そんなことしていいのかい??」 「うん。ホントはこういったケースでは"Cellsプロパティ"を使う方が、より美しいコードが書けるんだけど…
とりあえず時間がない。コードとしてはちょっと汚いけど、こういったRangeオブジェクトの使い方でもオッケーだよ」
「なるほどなあ…」

星くんは八木くんの解説に、しきりに感心します。

「よし、じゃあここまでにわかったコードを記述していこう。
ここからは紙じゃなく、VBEのコードウィンドウに入力するんだ。
ついでに"Sub"~"End Sub"の記述もしてプロシージャの形にするんだぜ。
あ、あとカウンタ変数の"i"を宣言するのも忘れずにな」

星くんは八木くんのPCを借り、必死になってコードを作成していきます。

シーズン1 「VBAとの出会い」編: 各エピソードへのリンク
一覧にもどる