Ifステートメント

Ifステートメントは条件を分岐する場合に使用します。

以下の例は「セルA1がパチンコの場合、パチンコではない場合」です。

If Range(“A1”).Value = “パチンコ” Then
  ‘パチンコの場合セルを赤色
  Range(“A1”).Interior.ColorIndex = 3
Else
  ‘スロットの場合セルを青色
  Range(“A1”).Interior.ColorIndex = 5
End If

セルA1がパチンコの場合セルが赤色になり、スロットの場合青色になります。
条件が2つの場合に使用します。
例) 男性か女性 5号機か6号機 日本人か外国人 
ここで注意が必要なのはセルが空白の場合も青色になります。
以下のように記述する事で回避できます。

If Range(“A1”).Value = “パチンコ” Then
  ‘パチンコの場合セルを赤色
  Range(“A1”).Interior.ColorIndex = 3
ElseIf Range(“A1”).Value = “スロット” Then
  ‘スロットの場合セルを青色
  Range(“A1”).Interior.ColorIndex = 5
End If

 

条件がたくさん存在する場合以下のよにすることもできます

If Range(“A1”).Value = “セブン機” Then
  Range(“A1”).Interior.ColorIndex = 3 ‘セルを赤色
ElseIf Range(“A1”).Value = “羽根物” Then
  Range(“A1”).Interior.ColorIndex = 5 ‘セルを青色
ElseIf Range(“A1”).Value = “権利物” Then
  Range(“A1”).Interior.ColorIndex = 6 ‘セルを黄色
ElseIf Range(“A1”).Value = “一般電役” Then
  Range(“A1”).Interior.ColorIndex = 4 ‘セルを緑色
End If

しかし一般的にあまりこのようなコードは推奨されていません。
プログラムの可読性が悪くなるからです。
条件が3以上になる場合はSelect Caseステートメントの使用をお勧めます。

Ifステートメントの記述方法には以下場合もあります。

If Range(“A1”).Value = “セブン機” Then
  Range(“A1”).Interior.ColorIndex = 3 ‘セルを赤色
ElseIf Range(“A1”).Value = “羽根物” Then
  Range(“A1”).Interior.ColorIndex = 5 ‘セルを青色
Else
  Range(“A1”).Interior.ColorIndex = 4 ‘セルを緑色
End If

セルA1がセブン機の場合はセルを赤色、羽根物の場合は青色、それ以外の場合セルを緑色です。

条件に一致したい場合だけ処理を行う方法として以下のような記述もあります。

If Range(“A1”).Value = “P” Then
  MsgBox “パチンコです”
End If

これと同じ動作で以下のような記述方法もあります。

If Range(“A1”).Value = “P” Then MsgBox “パチンコです”

これは裏技的な記述では無くよく使用します。私は初心者の頃この記述方法を知らずに他の人が作ったコードでIfステートメントの終わりの End If が無く混乱したことがありました。

Ifステートメントでは演算子を組み合わせることがよくります。

ある文字で始まる “海物語*” 「海物語」で始まる
If Range(“A1”).Value = “海物語*” Then
ある文字を含む “*海物語*” 「海物語」を含む
If Range(“A1”).Value = “*海物語*” Then
ある値と異なる <> “海物語” 「海物語」と異なる
If Range(“A1”).Value <> “海物語” Then
ある数値以上 >= 5000 5000以上
If Range(“A1”).Value >= 5000 Then
ある数値より大きい > 5000 5000より大きい
If Range(“A1”).Value > 5000 Then
ある数値以下  <= 5000 5000以下
If Range(“A1”).Value >= 5000 Then
ある数値より小さい < 5000 5000より小さい
If Range(“A1”).Value > 5000 Then

以上より大きいについて補足です。
台粗利が5000円以上 の時 If Range(“A1”).Value >= 5000 Then と記述します。
この場合 
5000円 5001円は含まれ 4999円はこの条件に含まれません。

If Range(“A1”).Value > 5000 Then の場合5000より大きいという意味です。
この場合 
5001円 5002円は含まれ 4999円 5000円はこの条件に含まれません。
ですので以下の2つの記述は同じ意味になります。
 If Range(“A1”).Value >= 5000 Then
 If Range(“A1”).Value > 4999 Then
以下
より小さいについても同様です。

小数点のある数値の場合注意が必要です。
玉粗利が 0.03円以上の機種を抽出したい場合次のようにします。
 ①If Range(“A1”).Value >= 0.03 Then
しかし以下の記述は①とは異なった意味になります
 ②If Range(“A1”).Value > 0.02 Then

①の場合玉粗利が 0.03円 0.031円 0.04円 は含まれ 0.02円 0.25円 0.299円はこの条件に含まれません。
①の場合玉粗利が 0.25円 0.299円 0.03円 0.04円 は含まれ 0.02円 0.019円 はこの条件に含まれません。

このように玉粗利や玉単価、スタートBYなど少数点を含んだ数値の場合明確に①のように記述を行い、②のように無駄な記述を行わないで下さい。

余談ですが通常小数点のない台粗利でも小数点が発生する場合があります。
設置台15台の粗利総額103,124円の場合
103,124円 ÷ 15台 = 6,874.933円 となり小数点が発生します。
特にエクセルではセルに 6874.933 と入力し表示形式で 6,875 とする事ができます。条件式どおりにならないと悩むことになりますので注意が必要です。

Ifステートメントは 理論演算子を使用することで複雑な条件判断を行うこともできます。
以下は記述例です。

①パチンコ かつ 海物語 の場合
 If Range(“A1”) = “パチンコ” And Range(“A2”) = “海物語” Then

②海物語 または ギンギラパラダイス の場合
 If Range(“A2”) = “海物語” or Range(“A2”) = “ギンギラパラダイス” Then

③パチンコ ではない場合
 If Not Range(“A1”) = “パチンコ” Then
この場合 If Range(“A1”) <> “パチンコ” Then と同じ意味になります