初心者向けの記事を書いてる最中ですが!
よいお題を見つけたものでつい。。
書いておかないと絶対わすれますし!!
というわけで、他所様の記事を参考に。
当初の目的は特定セル範囲の重複セルを塗りつぶしたいというもの
矩形ってなんだろう???
最初にものすごく重要なこと
元のお題はおいといて
本当にこの要件しかないなら
条件付き書式で5~10分で作ってください
聞かれたら即答できるのが理想です。
これは必ず初級やってるうちに覚えてください。
できるだけVBA書かないようにする癖をつけましょう。
とはいうものの、聞いていくとなんらかの条件が足されて
作ることになることもあります。
多いのは他ブックと比較して重複してたらあたり。
条件はおいといて、試験的にこのまま作ることになったとして
話を進めます。
Worksheet.Functionを使う
今まで全ての処理をアルゴリズムでやってきた場合は
このタイミングで覚えちゃいましょう。
コードはこちら
Sub test() Dim rng Set rng = Range("A1:J10") '色の初期化 rng.Interior.ColorIndex = xlNone Dim r As Range For Each r In rng If r.Value <> "" Then If Application.WorksheetFunction.CountIf(rng, r.Text) > 1 Then Debug.Print r.Value r.Interior.ColorIndex = 3 End If End If Next Debug.Print "end" End Sub
Application.WorksheetFunction.CountIf(rng, r.Text) > 1
この部分ですね。
とりあえず、countifは必修関数です
VBAでの使い方に慣れましょう。
範囲が広くなったらどうなるか
これを覚えるのにも丁度いいですね!
1000行☓10000行とか広くなったらどうなるか見ておきましょう。
要するに遅くなって使えなくなったりします。
そういう時はどうするか?ですね。
意外に忘れがちなこと
初期化処理です!
忘れたら後で足せばいいんですが←
何かを操作するときは初期化が必要な場合があります。
ついでに覚えて下さい。
次に空白は処理しない系です
忘れて全部色塗られました
ちょいちょい忘れますが、処理しない条件もきちんと
把握しましょう!
変数の型指定による補完
最初のrngは指定してないのに、rにはrange指定してるのは
参考用です。
たまに認識ない人がいるんですが、指定しておくと補完してくれます。
Interiorとか覚えるのめんどくさいんです
メソッドやプロパティが多いオブジェクトは指定しておきましょー
以上になります。
次回で他の方法で作ってみまっす。