Excelマクロの練習③

datacare1
今回の課題も条件分岐と繰り返し処理の混在です。
練習用のファイルはこちらからダウンロードできます。
C列が パチンコ & E列が 4円 の場合
機種名のセルを黄色
とします。

今回の課題は条件が2つである点がミソです。
過去投稿のIfステートメントで解説している演算子を使用します。
模範解答は以下のようになります。
Sub サンプル1() Dim i As Long For i = 5 To 24 If Cells(i, 3).Value = "パチンコ" And Cells(i, 5).Value = 4 Then Cells(i, 4).Interior.ColorIndex = 6 End If Next i End Sub |
このコードを実行すると以下のようになります。

以下のコードでも問題ありません。
結果も同じです。
Sub サンプル2() Dim i As Long For i = 5 To 24 If Cells(i, 3).Value = "パチンコ" Then If Cells(i, 5).Value = 4 Then Cells(i, 4).Interior.ColorIndex = 6 End If End If Next i End Sub |
どちらが可読性(見やすい)が良いか?
サンプル2の方が良いです。
サンプル1は以下の部分が長いです。
If Cells(i, 3).Value = “パチンコ” And Cells(i, 5).Value = 4 Then
実務になると、パチンコ & 4円 & アウトが10000以上 & スタートが6以上
といった感じの3つ以上の条件が出てきます。
このような時にand演算子を使ってコードを作成すると長ったらしくなります。
後々コードを見ても瞬時に理解が出来ません。
and演算子を使う場合は、条件は2つまでにした方が良いです。
3つ以上の条件の場合は、サンプル2のようにIfステートメントを分けて下さい。
サンプル2では、For~Nextステートメントの中にIfステートメント、さらにその中にIfステートメントが入っています。
このコードがぱっと見 分かり易いのはインデントの設定があるからです。
こちらも過去に解説しています。
自信がない人は、もう一度見返して下さい。
今回はここまでです。
次回もお楽しみに。
ABOUT ME