VBA記事5. IF文 文字色の変更







****************************************

Sub sample3()

Dim i As Variant

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

If Cells(i, 1) = 5 Then

Cells(i, 2) = "5です"

End If

Next


End Sub

****************************************

実行するとA列の5に反応して、横のB列のセルに5ですと入力します。

数字を変えたり、ダブルコーテーション( “ )の中の言葉を変えることが出来ます。




更に追加で上記のようなコードを付け加えると、図の左のような結果になります。


ElseEnd If までには5以外の処理が入ります。

またIfElseEnd Ifの間は何行書いても良いので行いたい処理を複数処理させることもできます。

Cells(i,2).Font.Color = vbRed で文字を赤色に変更しています。




 また、If~ElseEnd If の中に更にif文を書いたり、

上記のようにAnd を使うことで、5であり赤字ならばという複数条件を指定することもできます。

このif文の中にif文を書くなどの構造をネスト構造といい、何層にもなるネスト構造は混乱しやすい(読みづらい)ので避けるのが無難と言われていますが、プログラム的に正しく書いた処理ならネスト構造でも機能はします

_(アンダーバー)はコード内で改行するときに使用します。

今回の場合はAndの後ろにアンダーバーをつけることで見やすくなると考えて、付けていますが、付けない場合は同じ行に5であり赤字であるなら Thenと書くことも可能です。


また文章でなく、数式での処理をすることも可能です。





また、Elseif文を使って下記の書き方もできます。



この書き方をするとEnd if が一つしか書かなくてよいので、こちらの方が同じ機能だけどもシンプルで可読性やメンテテンス性が良いコードと言えます。

文章がシンプルな方がエラーは起きにくく、エラー修正も行いやすいです。


コメント