If文、Case文を使ってみようIf文は分岐処理の一つの手段です。
■ この章で学ぶこと |
以下のコードを記入して、実行してみてください。
Sub If文練習()
If Worksheets("sheet1").Range("A1") = 1000 Then
Range("A1").Interior.ColorIndex = 3
Else
Range("A1").Interior.ColorIndex = 6
End If
End Sub
|
If ○○○ Then △△△ End If
英訳してみると分かりますが、もし○○○ならば△△△を実行しなさい。というわけです。
ここでは、セル「A1」が1000ならば赤色に色を変更しなさいということです。
End IfはIf文の最後に必ずつけなくてはいけません。
Else
「ちがうならば」と訳すのがいいと思います。ここではセル「A1」が1000でないならば
ということになり、その場合黄色に色を変更しなさいという命令になっています。
次は、If文の違うバージョンを試してみましょう。
上のIf文は○○○の時とそれ以外のときで分けましたが、そんな簡単にいかな場合も当然ありますよね。
下のコードは、3パターン(1000のとき、2000のとき、3000のとき)とそれ以外のときで分けてます。
Sub If文練習2()
If Range("A1") = 1000 Then
Range("A1").Interior.ColorIndex = 3
End If
If Range("A1") = 2000 Then
Range("A1").Interior.ColorIndex = 6
End If
If Range("A1") = 3000 Then
Range("A1").Interior.ColorIndex = 4
End If
If Range("A1") <> 1000 And Range("A1") <> 2000 And Range("A1") <> 3000 Then
Range("A1").Interior.ColorIndex = 7
End If
End Sub
|
最後のIf分は1000ではなくかつ2000ではなく3000ではない時という意味となります。
勘の言い方はお分かりと思いますが、「または」としたい場合はorを使用します。
でも、ここまでだと上と同じで何も変わりません。
また、非常に長ったらしいコードになっておりすっきりさせたいと思います。
Sub If文練習3()
If Range("A1") = 1000 Then
Range("A1").Interior.ColorIndex = 3
ElseIf Range("A1") = 2000 Then
Range("A1").Interior.ColorIndex = 6
ElseIf Range("A1") = 3000 Then
Range("A1").Interior.ColorIndex = 4
Else
Range("A1").Interior.ColorIndex = 7
End If
End Sub
|
If文は複数の分岐処理が苦手です(と私は考えています)。下のコードを見てください。
複数の分岐処理にはCase文を使用するとしっくりくるのではないでしょうか?
Sub Case文に修正()
With Range("A1")
Select Case .Value
Case 1000
.Interior.ColorIndex = 3
Case 2000
.Interior.ColorIndex = 6
Case 3000
.Interior.ColorIndex = 4
Case Else
.Interior.ColorIndex = 7
End Select
End With
End Sub
|
大分すっきりした印象を持ちませんか?(前章で学んだWithを使用しているのでさらにすっきり見えると思います)
Case文の文法としては
Select Case ○○○ 〜 Case△@△ Case◇A◇ ・・・ End Select
となります。上のコードを見ていただければわかりますよね。
このコードも実行させてみるとIf文で作成した内容と同等に作動すると思います。
このように、VBAではいくつものコーディング方法があるので、最適なものがどれかを探りながら
コーディングして勉強していきましょう。