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

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

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

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

第8話「星くん、VBAプログラムを完成させる!」

第8話「星くん、VBAプログラムを完成させる!」

登場人物紹介

Ifステートメントの条件が見えてきた!

「ホントだ。この"Selection"ってなんだい?」

「その上の行に、"Range("A1").Select"と記述されてるだろ?
これは、"A1のセルを選択する"という意味さ。
"Selection"は選択されているセルを指すから、この場合"Selection"とA1セルは同じだよ。
つまり、"Range("A1").Font.ColorIndex = 3"と記述しても、同じ処理を行うよ」

星くんはウーンと腕を組んで考えています。

「ひょっとして…これが、"セルのフォント色が赤だったら"の条件に使えるということかい?」

「ピンポン!ピンポン!ピンポン!!大正解だ、星!
ここでは、FontオブジェクトのColorIndexプロパティに赤、つまりインデックス番号の3を代入してる。
これは、"セルのフォント色を赤にする"という意味だ。
でも、同じ記述をIfステートメントの条件にすれば、FontオブジェクトのColorIndexプロパティが3のとき、
つまり"セルのフォント色が赤だったら"という条件として利用できるのさ!」

「すごい…」

星くんがゴクリとのどを鳴らしました。

「こんな具合に、マクロの記録はオブジェクトに対する操作やプロパティを調べるには、
すごく便利な機能なんだ。
使い方を間違えなければ、VBAプログラミングを強力にサポートしてくれるお役立ち機能になるんだよ。
さあ星、さっそくこの部分を、おまえの作ったプログラムに組み込むんだ」

星くんは、マクロの記録で記録されたコードを参考に条件を作成します。

「Ifステートメントの条件を作ってみたよ。これでいいのかな?」

If Range("A1").Font.ColorIndex = 3 Then

「んんん~~~!おしい!!!星、よく見てごらん。
この条件だと、いくらFor…Nextステートメントで繰り返し処理を行っても、いつも条件は"A1セルのフォント色が赤だったら"になっちゃうよ」

「あっ、そっか。繰り返しを行うのは、A列のすべての行に対して条件判定と数字の代入を行う必要があるからだったよね。これじゃマズイね」

星くんはコードを次のように書き換えました。

シーズン1 「VBAとの出会い」編:エピソード一覧

一覧へ戻る

MENU