Excelマクロ学習

Excelマクロの練習③

wp-datacare

今回の課題も条件分岐と繰り返し処理の混在です。
練習用のファイルはこちらからダウンロードできます。

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
酒見 拓也
酒見 拓也
代表取締役
パチンコ企業向けにExcelマクロを使って業務の自動化、効率化のやり方を発信しています。 企業向けに「Excelマクロ研修」も行っています。
記事URLをコピーしました