Sub Macro1()
Range("A1").Interior.Color = 65535
End Sub
前回は、記録マクロを利用してこんなコードを作ってみました。
今回は、せっかくなので ちょっとだけ便利にしてみたいと思います。
マクロの良いところは、
「記録したコードに、ほんの少しだけ手を加えると一気に実用的になる」
という点なんです。
今回は、
A1~A20 の中で、100以上の数字が入っているセルだけ黄色にする
という“ちょい便利マクロ”に進化させてみます。
難しいことはしません。
使うのは If 文 と For 文 の2つだけ。
まずは、こんな感じに編集してみました。
Sub Macro1()
Dim i As Integer
For i = 1 To 20
Cells(i, 1).Interior.Color = 65535
Next i
End Sub
それぞれ何してるのかというと…。
Dimは変数の宣言。iという変数を数値型で宣言しました。
って言ってもよくわからない人はおまじないだと思ってこう書いてください。
For i = 1 To 20 は、読んだらなんとなくわかる通り、1から20まで回しますの意味。
Next i を後ろにつけて、ForとNextの間にやりたい処理を書きます。
Cellsというのは、Rangeの仲間とでも思ってくれればいいかな。
Range("A1")はCells(1, 1)と置き換えることができ、括弧の中は(行,列)になります。
そして、Cells(i, 1)と書くと、さっき作った「i」が1から20まで回ってくれるので。
1列目、すなわち"A列"の1行目から20行目までっという意味になります。
.Interior.Color = 65535は前回も書いた通り、セルを黄色にするという意味なので。
これを実行すると…。

そうです。A列の1行目から20行目がすべて黄色に変わりました。
なんか面白いですよね。
いろいろ自分で編集してみてくださいませ。
え?これだけじゃイマイチ使えない?
では、今度はもうちょっと編集、こうしてみましょう。
Sub Macro1()
Dim i As Integer
For i = 1 To 20
If IsNumeric(Cells(i, 1).Value) Then
If Cells(i, 1).Value >= 100 Then
Cells(i, 1).Interior.Color = 65535
End If
End If
Next i
End Sub
さて、Ifというキーワードが出てきました。
もちろん、「もしも」という意味で取ってもらって構いません。
Ifの場合は、Then、そしてEnd If という言葉を使って、
もしも(If) 〇〇〇〇〇ならば、そしたら(Then)
△△△△△な処理をしてください。
終わり(End If)
っと書きます。
この文章ではIfをふたつ書いていて、
ひとつめは、
IsNumeric(Cells(i, 1).Value) これは、対象のセルに数値が入っていたら
っという意味です。Numericは数値と解釈します。
ふたつめは、
Cells(i, 1).Value >= 100 これは、対象のセルの値が100以上だったら
っという意味になります。Valueは値と訳せばわかりやすいかも。
つまり、このコードのIf文は、
対象のセルが数値だったら、かつ、その値が100以上だったら。
っという意味になり、100以上の数値が入っているときだけ、セルが黄色になります。
こんな数値をA列の1から20行目までに入れてみました。

そして、このマクロを実行すると…。

どうでしょう。
100以上の数値セルだけ、黄色に塗りつぶされました。
値を変えたり、行列をうまく変えれば、いろいろ実用に使えそうではないですか?
記録マクロを使えて、さらにForとIfといった程度のコードを覚えておくだけで、
Excelの業務効率が格段に上がるはずです。
みなさまもぜひ、お試しあれ。