セルの状態によって条件分岐!

今回は、セルの状態を判断する方法をいくつか紹介していきます。

こんなフォーマットを用意してみました。
f:id:basara_reond:20110222121606j:image



A列に入っているデータを一つ一つみて、
2行目に入っている条件に当てはまれば、
その列にマークを付けて行きたいと思います。


早速ですが、コードは以下のようになります。
f:id:basara_reond:20110222121732p:image



数字を判断するものは、あまり問題無いかと思います。
比較演算子(= , >= , <= , <>)を使って.Valueに対しての比較をしています。


セルの色を判断している箇所があります。
黄色セルだったら・・・という、
If Cells(i, 1).Interior.ColorIndex = 6 Then
です。
セルの色を判断する手段は他にもありますが、
今回はInteriorクラスのColorIndexプロパティを使っていきます。
ColorIndexというのは、Excelの色には予め番号がつけてあり、
それを取得したり、設定したりできるプロパティです。


取得も設定も出来るので、
Msgbox Cells(2,3).Interior.ColorIndex
とすれば、B3のセルの色番号をダイアログボックスで表示することが出来ます。
逆に、
Cells(2,3).Interior.ColorIndex = 6
とすれば、B3セルに6番の色(黄色)を設定することが出来ます。
何番が何色かは、Web検索すればすぐに分かりますが、
僕はよく、「マクロの記録」やMsgbox、Debug.Printを使って確認しています。
このコードでも使用していますが、「色なし」は-4142を設定することになります。

さて、コード実行をすると以下のように該当箇所に"○"が付きます。
f:id:basara_reond:20110222121752p:image



これらはセルの状態を判断するごく一部です。
あとは応用次第で、
・計算してXXになるセル
・偶数、奇数のセル
・フォントサイズや書式で判断
・xxxxの文字列を含むセル
などなど、関数や計算を応用すれば、いくらでも判断していくことが出来ます。


「何がしたいか」と「何が出来るか」が分かってくれば、
あとは応用次第、、ということになります。
全てを覚える必要はありません。
VBA辞典やWEBで検索しつつでも散らばったアイディアをまとめていければ、
徐々に出来ることが分かってくると思います。