ExcelVBA入門 #5:もし高校野球の女子マネージャーがドラッカーの『マネ
シリーズもくじはこちら
練習問題:これが分かる・できる人は以降読まなくても大丈夫
- 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
…と、ここまでざっと書いてきましたが、
まだよく分からない方のために、復習を兼ねたプチ応用編をやりたいと思います。