読者です 読者をやめる 読者になる 読者になる

アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

ExcelVBA入門 #5:もし高校野球の女子マネージャーがドラッカーの『マネ

Excel VBA ExcelVBA入門シリーズ 条件分岐処理

練習問題:これが分かる・できる人は以降読まなくても大丈夫

  • Ifを使った分岐処理が書ける(If, ElseIf, Else)
  • Ifに用いる条件式について、複数条件の「かつ」「または」を使い分けて書ける

はじめに

プログラミング三種の神器(※わたしが勝手に考えた)
「変数」「繰り返し処理」に続き、最後は「分岐処理」です。

簡単に言うと、「もし○○だったら××の処理をするが、△△だったら□□をする」みたいなやつです。

If文の書き方

「If」というのを使います。基本の書き方はこちら。

'「もし○○だったら××」パターン
If 条件式 Then
    条件式が正しいときの処理
End If

これに、「Else」や「ElseIf」という文を書き足すことができます。
どういうことかというと、こんな感じ。

'「もし○○だったら××、○○でなければ□□」パターン
If 条件式 Then
    条件式が正しいときの処理
Else
    条件式が正しくないときの処理
End If
'「もし○○だったら××、△△だったら□□(どちらでもなければ何もしない)」パターン
If 条件式(1) Then
    条件式(1)が正しいときの処理
ElseIf 条件式(2) Then
    条件式(2)が正しいときの処理
End If

「Else」と「ElseIf」を組み合わせることもできますし、「ElseIf」は2つ以上書くこともできます。

'めんどくさいパターン
If 条件式(1) Then
    条件式(1)が正しいときの処理
ElseIf 条件式(2) Then
    条件式(2)が正しいときの処理
ElseIf 条件式(3) Then
    条件式(3)が正しいときの処理
Else
    条件式(1)(3)がいずれも正しくないときの処理
End If

具体例

実際にはどういう感じかと言うと、こういう感じ。

'①変数fruitに「みかん」が入っているかどうかでメッセージを出し分ける
If fruit = "みかん" Then
    MsgBox ("おいしいですよね!")
Else
    MsgBox ("は?")
End If

'②変数aとbについて、「和が5かつ差が3」「和が10かつ差が2」「それ以外」でメッセージを出し分ける
If (a + b = 5) And (a - b = 3) Then
    MsgBox ("もしかして a=4,b=1 ですか?")
ElseIf (a + b = 10) And (a - b = 2) Then
    MsgBox ("もしかして a=6,b=4 ですか?")
Else
    MsgBox ("これもうわかんねえな")
End If

'③変数aについて、「3以下、もしくは8以上」であればメッセージを出す
If a <= 3 Or a >= 8 Then
    MsgBox ("うっす")
End If

'④セルA1とセルA2が同じ内容であればメッセージを出し、そうでなければセルA1をセルA2の内容で上書きする
If Range("A1").Value = Range("A2").Value Then
    MsgBox ("おなじです")
Else
    Range("A1").Value = Range("A2").Value
End If

…というように、条件は等号や不等号で表した式で、AndやOrを用いて複数指定することもできます。
例に出したとおり、Andを挟んだ式は両方とも正しい必要があり、Orを挟んだ式はいずれかが正しければOKです。

<ある程度プログラミングわかってる人向け>
わざわざ書くまでもない気がしますが、他言語と同様、評価結果がTrueになればOKです。
(「If True Then ~」で必ず実行)

次回予告

ExcelVBA入門 #6:ここまでの総集編 - アナログCPU:5108843109
…と、ここまでざっと書いてきましたが、
まだよく分からない方のために、復習を兼ねたプチ応用編をやりたいと思います。