ホーム > プログラミング入門 > Lesson7: 制御構造 If Then Else

制御構造 If Then Else
制御構造 If Then Else 制御構造 If Then Else
条件分岐です。If A Then B...もしAならば、B。
If 条件式 Then
  処理
End If

条件式を満たすとき処理しなさい、ということです。
成績表
こんな表を作ってみました。
「D3」が80点以上なら、「D3」を青く塗ることにします。それ以外は何もしない。
流れ図(フローチャート)にすると、
フローチャート
これを見て、プログラムを作ります。
2004年8月
制御構造 If Then Else その2 制御構造 If Then Else その2
プログラムを作ってみます。
Sub test_06()
  
  '制御構造 If Then の勉強中
  
  If Range("D3").Value >= 80 Then
    Range("D3").Interior.ColorIndex = 37
  End If
  
End Sub

Range("D3").Value は"D3"の値です。
If Range("D3").Value >= 80 Then は"D3"の値が80以上のとき。
Range("D3").Interior.ColorIndex は"D3"のセルの色です。
Range("D3").Interior.ColorIndex = 37 は"D3"のセルに色37を塗る。
このプログラムを動かしてみると、
実行結果
"D3"は80以上なのでセルに色がつきました。
そして、"D3"のセルの色を消し、80未満の数字を入れもう一度実行すると
何もおこならい...プログラムは正しいということに。

作る場所... 「作る場所...」
標準モジュールの中にプログラムを作ったときは、
成績表を入力してあるシートをアクティブにしてから行うこと。
じゃないと、どこのシートの"D3"かわからないので。
(今は、どうしたらいいかわからない...勉強してきます)
実行結果
成績表を入力してあるシートにプログラムを書いたときは
どこがアクティブでも問題ない...はず(たぶん)

勉強してきました...
どこのシートなのかプログラムの中で指定すれば問題ない...
 Rangeの前にSheets("シート名")をつければいいんです。
2004年8月
制御構造 If Then Else その3 制御構造 If Then Else その3
条件分岐です。If A Then B Else C...もしAならばB、それ以外ならC
If 条件式 Then
  処理1
Else
  処理2
End If

条件式を満たすとき処理1、それ以外のとき処理2をしなさいということです。
成績表
またこの表を使ってみました。
「D3」が80点以上なら、「D3」を青を塗ることにし、
それ以外(80点未満)なら、緑を塗ることします。
流れ図(フローチャート)にすると、
フローチャート
これを見て、プログラムを作ります。
2004年8月
制御構造 If Then Else その4 制御構造 If Then Else その4
プログラムを作ってみます。
Sub test_07()
  
  '制御構造 If Then Else の勉強中
  
  If Range("D3").Value >= 80 Then
    Range("D3").Interior.ColorIndex = 37
  Else
    Range("D3").Interior.ColorIndex = 35
  End If
  
End Sub

"D3"が80以上のとき、"D3"のセルの37の色を塗る
それ以外のとき、"D3"のセルに35の色を塗る
このプログラムを動かしてみると、
実行結果1
"D3"は80以上なのでセルに色がつきました。
そして、"D3"のセルの色を消し、80未満の数字を入れもう一度実行すると
実行結果2
"D3"は緑になりました。
(ただし、成績表を入力してあるシートをアクティブにしてから行うこと)
2004年8月
制御構造 If Then Else その5 制御構造 If Then Else その5
条件分岐です。If A Then B ElseIf C Then D Else E...
もしAならばB、CならばD、それ以外ならE。
If 条件式1 Then
  処理1
ElseIf 条件式2 Then
  処理2
ElseIf 条件式3 Then
  処理3
Else
  処理4
End If

条件式1を満たすとき処理1
条件式1を満たさないで条件式2を満たすとき処理2
条件式1、2を満たさないで条件式3をみたすとき処理3
その他(条件式1、2、3を満たさない)とき処理4
 
前と同じ成績表を使ってみました。
「D3」が80点以上なら、「D3」を青。
50点以上なら、緑。
30点以上なら、黄。
それ以外(30点未満)なら、赤を塗ることします。
流れ図(フローチャート)にすると、
フローチャート
これを見て、プログラムを作ります。
2004年8月
制御構造 If Then Else その6 制御構造 If Then Else その6
プログラムを作ってみます。
Sub test_08()
  
  '制御構造 If Then ElseIf の勉強中
  
  If Range("D3").Value >= 80 Then
    Range("D3").Interior.ColorIndex = 37
  ElseIf Range("D3").Value >= 50 Then
    Range("D3").Interior.ColorIndex = 35
  ElseIf Range("D3").Value >= 30 Then
    Range("D3").Interior.ColorIndex = 36
  Else
    Range("D3").Interior.ColorIndex = 38
  End If
  
End Sub

"D3"が80以上のとき、"D3"のセルの37の色を塗る
"D3"が50以上(80未満)のとき、"D3"のセルの35の色を塗る
"D3"が30以上(50未満)のとき、"D3"のセルの36の色を塗る
それ以外(30未満)のとき、"D3"のセルに38の色を塗る
このプログラムを動かしてみると、80点以上のとき
実行結果1
50点以上(80点未満)のとき
実行結果2
30点以上(50点未満)のとき
実行結果3
それ以外(30点未満)のとき
実行結果4
フローチャートの通りに動きました。
(ただし、成績表を入力してあるシートをアクティブにしてから行うこと)
ElseIfを使えばたくさんの条件で分けることができます。
2004年8月