オデッセイの運営サイト一覧

Excel®️、Accessのマクロ・VBAのスキルを評価する資格VBAエキスパート

企業・教育機関の皆さまへ 試験会場を探す お問い合せ

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

第7話「星くん、VBAプログラミングに挑戦する!」

第7話「星くん、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との出会い」編:エピソード一覧

一覧へ戻る

MENU